類似 ES 文件管理器:進入選擇模式底部欄顯示「全選、刪除、複製」,退出顯示「新建、排序、設置」,狀態切換。
| 複雜度 | 方案 | 適用場景 |
|---|---|---|
| 簡單 | RadioGroup + Fragment | 固定 3-5 個圖標+文字,狀態少,每個頁面一個 Fragment |
| 中等 | BottomNavigationView (Material Design) | 標準導航,菜單資源定義,支持 Badge、Shift 模式 |
| 複雜/高度自定義 | 自定義 LinearLayout/ConstraintLayout + 狀態機 | 按鈕動態增減、圖標動畫、進度條、懸浮提示、多行布局 |
// 布局:底部 LinearLayout (horizontal) 包含若干 ImageButton/TextView
// 狀態枚舉
enum BarState { NORMAL, SELECT_MODE, EDIT_MODE }
// 切換方法
void switchState(BarState newState) {
currentState = newState;
// 隱藏/顯示、替換圖標/文字、綁定新點擊監聽
btn1.setVisibility(newState == SELECT_MODE ? VISIBLE : GONE);
btn2.setText(newState == EDIT_MODE ? "完成" : "編輯");
// 重新綁定 OnClickListener
btn1.setOnClickListener(v -> onSelectAll());
}
// Fragment 中調用
((MainActivity)getActivity()).switchState(BarState.SELECT_MODE);
**按需求複雜度選:簡單用 RadioGroup/BottomNavigationView,複雜自寫 Layout+狀態機。**