public void onClick(View v) {
Toast.makeText(MainActivity.this,"111",Toast.LENGTH_SHORT).show();
}
}).setActionTextColor(Color.RED)
View v=bar.getView();
v.setBackgroundColor(Color.GREEN);
bar.show();
思路:既然有虛擬按鍵欄遮擋Snackbar,那麼我們就在顯示Snackbar的同時隱藏掉虛擬按鍵欄,這樣屏幕底部就只有Snackbar,也就不存在遮擋問題了,但是有兩點需要注意,第一點,配置隱藏虛擬按鍵欄的flag時要注意配置全面一點,不然會出現點擊屏幕又彈出虛擬按鍵欄的情況,第二點,當Snackbar消失時,記得再次把虛擬按鍵欄顯示出來,不然屏幕底部會多出一塊佈局,很難看.不過以上這兩點都不用操心了,我已經在代碼中配置好了,直接複製粘貼就能用,代碼需要注意的地方都已經註釋清楚了.代碼如下:
- /**
- * 展示一個SnackBar
- */
- public void showSnackBar(String message) {
- //去掉虛擬按鍵
- getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
- | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION //隱藏虛擬按鍵欄
- | View.SYSTEM_UI_FLAG_IMMERSIVE //防止點擊屏幕時,隱藏虛擬按鍵欄又彈了出來
- );
- final Snackbar snackbar = Snackbar.make(getWindow().getDecorView(), message, Snackbar.LENGTH_INDEFINITE);
- snackbar.setAction("知道了", new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- snackbar.dismiss();
- //隱藏SnackBar時記得恢復隱藏虛擬按鍵欄,不然屏幕底部會多出一塊空白布局出來,和難看
- getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
- }
- }).show();
- }
這兩種方法都可以實現效果,選擇哪種方式都ok.
動態圖錄制完有點卡頓,實際效果很流暢