由于我的应用程序名称长(和其他因素),我现在拥有的 4 个选项卡已折叠。这发生在使用大布局的设备上。在纵向模式下,它看起来像上图。但是,在横向模式下,名称和 4 个选项卡有足够的空间。
我已经尝试删除标题,但选项卡仍然折叠。如何使它始终显示选项卡,如果没有空间,让它隐藏应用程序名称。我宁愿没有省略号(App Name Go ...)。我宁愿完全隐藏标题。我需要这个专门用于纵向模式下的大型布局。
任何帮助,将不胜感激。
由于我的应用程序名称长(和其他因素),我现在拥有的 4 个选项卡已折叠。这发生在使用大布局的设备上。在纵向模式下,它看起来像上图。但是,在横向模式下,名称和 4 个选项卡有足够的空间。
我已经尝试删除标题,但选项卡仍然折叠。如何使它始终显示选项卡,如果没有空间,让它隐藏应用程序名称。我宁愿没有省略号(App Name Go ...)。我宁愿完全隐藏标题。我需要这个专门用于纵向模式下的大型布局。
任何帮助,将不胜感激。
为避免这种情况,请先在设置导航模式后添加选项卡。像这样,
ActionBar bar = getSupportActionBar();
//dont set navigation mode now.
bar.setLogo(logo);
bar.setHomeButtonEnabled(false);
bar.setDisplayHomeAsUpEnabled(true);
bar.setDisplayShowTitleEnabled(false);
// Now add tabs
ActionBar.Tab tab1 = bar.newTab();
ActionBar.Tab tab2 = bar.newTab();
ActionBar.Tab tab3 = bar.newTab();
tab1.setText("Packages");
tab1.setIcon(R.drawable.abs__ic_menu_share_holo_dark);
tab2.setText("Blogs");
tab2.setIcon(R.drawable.abs__ic_voice_search);
tab3.setText("Gallery");
tab3.setIcon(R.drawable.abs__ic_cab_done_holo_dark);
tab1.setTabListener(new MyTabListener());
tab2.setTabListener(new MyTabListener());
tab3.setTabListener(new MyTabListener());
bar.addTab(tab1);
bar.addTab(tab2);
bar.addTab(tab3);
// 现在设置导航模式
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
当可用区域较少时,默认情况下操作栏将折叠选项卡。在纵向视图中,它会在操作栏下方创建另一个选项卡面板。您也可以在横向模式下强制执行此行为:
try {
Class c = Class.forName("com.android.internal.app.ActionBarImpl");
Method m = c.getDeclaredMethod("setHasEmbeddedTabs",boolean.class);
m.setAccessible(true);
m.invoke(getActionBar(),false); //-- do not embed tabs --
}catch (Exception e) {
e.printStackTrace();
}
注意:这是一个反射黑客,底层私有类可以在未来的版本中改变。
您无法控制操作栏选项卡何时折叠。这取决于安卓。我提出了一个关于这个的问题,但被拒绝了。
如果您绝对不能拥有折叠的 UI,请切换到ViewPager
ViewPagerIndicatorPagerTabStrip
中的选项卡指示器或任何其他ViewPager
选项卡实现。