如何更改Android中操作栏选项卡的宽度?

时间:2014-07-21 11:30:43

标签: android android-actionbar android-tabs android-navigation

我搜索过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的最大和最小宽度,但这并不能让我自由地根据选项卡名称自定义选项卡宽度。

任何帮助都会非常感激。

0 个答案:

没有答案