我正在使用Tab导航创建一个应用。我显示图标而不是文字。
我希望标签只包装图像,所以我不必滚动到达所有标签。
如何创建仅填充屏幕的标签?
这是标签当前的外观:
你可以看到我需要滚动...这个屏幕截图中还有另一个看不见的标签。
这是我创建标签的代码:
final ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// Create the adapter that will return a fragment for each of the three
actionBar.addTab(
actionBar.newTab()
.setIcon(R.drawable.tabs_bar_add_item)
.setContentDescription(TAB_ADD_ITEM)
.setTabListener(this)
.setCustomView(R.layout.add_item_tab)
);
actionBar.addTab(
actionBar.newTab()
.setIcon(R.drawable.tabs_bar_shopping_list)
.setContentDescription(TAB_SHOW_LIST)
.setTabListener(this)
);
actionBar.addTab(
actionBar.newTab()
.setIcon(R.drawable.tabs_bar_map)
.setContentDescription(TAB_SHOW_MAP)
.setTabListener(this)
);
actionBar.addTab(
actionBar.newTab()
.setIcon(R.drawable.tabs_bar_specials)
.setContentDescription(TAB_SHOW_SPECIALS)
.setTabListener(this)
);
第一个R.layout.add_item_tab
只是一个简单的imageView。我试着这样做......
有什么想法吗?
答案 0 :(得分:7)
最后我找到了原因,也许它可以帮助别人......
错误是我的图标太大而无法放入单个标签中。即使它们按比例缩小,Tab宽度的计算大小也是原始大小。
我的解决方案是使用ImageView包装这些图像,并将其宽度设置为
ImageWidth = ScreenWidth / NumOfTabs - 2 * 16dp(转换为像素)
额外的16 * 2用于填充。
此外,可以禁用填充。
答案 1 :(得分:1)
我找到了这段代码here。完成工作,结合上述答案;我只是无法让我的6个图标达到令人满意的大小,而且我无法弄清楚如何摆脱我的图标周围的额外间距。
private void setTabsMaxWidth() {
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int screenWidth = displaymetrics.widthPixels;
final ActionBar actionBar = getActionBar();
final View tabView = actionBar.getTabAt(0).getCustomView();
final View tabContainerView = (View) tabView.getParent();
final int tabPadding = tabContainerView.getPaddingLeft() + tabContainerView.getPaddingRight();
final int tabs = actionBar.getTabCount();
for(int i=0 ; i < tabs ; i++) {
View tab = actionBar.getTabAt(i).getCustomView();
TextView text1 = (TextView) tab.findViewById(R.id.text1);
text1.setMaxWidth(screenWidth/tabs-tabPadding-1);
}
}