使用 TabHost 實現標籤頁導航,在某個 Activity(如 AActivity)中點擊按鈕時隱藏底部的 TabWidget,再次點擊顯示。
獲取 TabWidget 並切換可見性:
TabHost tabHost = getTabHost(); // 在 TabActivity 或繼承 TabHost 的 Activity 中
TabWidget tabWidget = tabHost.getTabWidget();
button.setOnClickListener(v -> {
if (tabWidget.getVisibility() == View.VISIBLE) {
tabWidget.setVisibility(View.GONE);
} else {
tabWidget.setVisibility(View.VISIBLE);
}
});
public class MainTabActivity extends TabActivity {
private TabWidget tabWidget;
private Button toggleBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_tab);
TabHost tabHost = getTabHost();
tabWidget = tabHost.getTabWidget();
toggleBtn = findViewById(R.id.btn_toggle_tab);
// 添加標籤頁...
addTab("Files", R.drawable.ic_files, FilesActivity.class);
addTab("Settings", R.drawable.ic_settings, SettingsActivity.class);
toggleBtn.setOnClickListener(v -> toggleTabVisibility());
}
private void addTab(String tag, int iconRes, Class<?> activityClass) {
Intent intent = new Intent(this, activityClass);
TabHost.TabSpec spec = tabHost.newTabSpec(tag)
.setIndicator(tag, getResources().getDrawable(iconRes))
.setContent(intent);
tabHost.addTab(spec);
}
private void toggleTabVisibility() {
int newVis = (tabWidget.getVisibility() == View.VISIBLE) ? View.GONE : View.VISIBLE;
tabWidget.setVisibility(newVis);
// 可選:調整內容區域填充被隱藏的空間
// tabHost.getTabContentView().requestLayout();
}
}
ViewPager + TabLayout (Material Design) 或 FragmentTabHost。layout_weight="1",或代碼中調整 LayoutParams。SharedPreferences 或單例管理器存儲狀態。<com.google.android.material.tabs.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<androidx.viewpager.widget.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
隱藏/顯示:
TabLayout tabLayout = findViewById(R.id.tabLayout);
toggleBtn.setOnClickListener(v ->
tabLayout.setVisibility(tabLayout.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE)
);
新方案自動處理內容區域自適應,且符合 Material Design 規範,強烈建議新項目採用。