在ActionBar.Tab中更改选项卡宽度

Ely*_*avi 4 tabs android android-actionbar

我正在使用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)
    );
Run Code Online (Sandbox Code Playgroud)

第一个R.layout.add_item_tab只是一个简单的imageView.我这样试过......

有任何想法吗?

Ely*_*avi 7

最后我找到了原因,也许它可以帮助别人......

错误是我的图标太大而无法放入单个标签中.即使它们按比例缩小,Tab宽度的计算大小也是原始大小.

我的解决方案是使用ImageView包装这些图像,并将其宽度设置为

ImageWidth = ScreenWidth/NumOfTabs - 2*16dp(转换为像素)

额外的16*2用于填充.

此外,可以禁用填充.