我搜索过100多个链接,但没有找到任何有效的答案。
我需要创建可变数量的标签,具体取决于我从之前的活动中收到的标签数量。我得到的标签可以有3个字符(全部)到24个字符的长度。我正在使用附加的代码来创建标签。
final ActionBar actionBar = getActionBar();
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayHomeAsUpEnabled(false);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setCustomView(actionBarLayout);
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
final int actionBarColor = getResources().getColor(R.color.green);
actionBar.setBackgroundDrawable(new ColorDrawable(actionBarColor));
for(int k = 0; k < tabs.length; k++) {
TextView t = new TextView(browse_sub_category);
t.setText(tabs[k]);
t.setTextSize(18);
t.setGravity(Gravity.CENTER);
t.setSingleLine();
t.setPadding(0, 20, 0, 0);
t.setTypeface(myTypefaceLight);
t.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
actionBar.addTab(
actionBar.newTab()
.setCustomView(t)
.setTabListener(browse_sub_category));
}
actionBar.setHomeButtonEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
通过使用setCustomView,我可以自定义textview,但这不会影响我的选项卡的宽度。它采用默认宽度。我希望如果我的标签名称'All'只需40dp就可以使用,那么它应该只需要40dp,如果我的标签名称'Hello World'需要120dp,那么标签应该自动采用该宽度。
我已经尝试通过将LayoutParams.WRAP_CONTENT的宽度更改为数值来自定义textview。我也尝试过像
这样的支票if(tabs[k].length() <= 3) {
tabWidth=40;
} else if((tabs[k].length() > 3) && (tabs[k].length() <= 6) {
tabWidth=80;
} else {
tabWidth=120;
}
但这只影响宽度textview而不影响制表符的宽度。
我可以在styles.xml中设置tab的最大和最小宽度,但这并不能让我自由地根据选项卡名称自定义选项卡宽度。
任何帮助都会非常感激。