【问题标题】:ActionBar AppCompat change Tab indicator colorActionBar AppCompat 更改 Tab 指示器颜色
【发布时间】:2014-12-10 06:25:41
【问题描述】:

我看过很多帖子和答案,但我仍然不清楚,如果我有更改标签指示器颜色而不使用Android Asset Studio

,该怎么办
public class MainActivity extends ActionBarActivity implements           android.support.v7.app.ActionBar.TabListener{

private ViewPager tabsviewPager;
private TabsAdapter mTabsAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    tabsviewPager = (ViewPager) findViewById(R.id.tabspager);

    mTabsAdapter = new TabsAdapter(getSupportFragmentManager());

    tabsviewPager.setAdapter(mTabsAdapter);

    getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#0000ff")));
    getSupportActionBar().setIcon(
               new ColorDrawable(getResources().getColor(android.R.color.transparent)));        
    //getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.bg));
    getSupportActionBar().setStackedBackgroundDrawable(new ColorDrawable(Color.parseColor("#3b5998")));


    getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    Tab friendstab = getSupportActionBar().newTab().setIcon(R.drawable.ic_action_action_account_child).setTabListener(this);
    Tab publicprofiletab = getSupportActionBar().newTab().setIcon(R.drawable.ic_action_action_account_box).setTabListener(this);
    Tab communitytab = getSupportActionBar().newTab().setIcon(R.drawable.ic_action_action_account_circle).setTabListener(this);

    getSupportActionBar().addTab(friendstab);
    getSupportActionBar().addTab(publicprofiletab);
    getSupportActionBar().addTab(communitytab);

我附上了现有的应用程序屏幕截图,我的操作栏目前看起来如何,见下文:

如您所见,我将#0000ff 用于操作栏background,而我想为Tab Indicator 使用相同的颜色

【问题讨论】:

  • 你是怎么解决的?

标签: android android-actionbar android-appcompat android-styles android-actionbar-compat


【解决方案1】:

actionBarTabStyle 属性应与基本应用程序/活动主题一起使用,而不是在ActionBar 样式下

请参阅为您的应用程序创建新样式并应用于清单文件中的节点。

<style name="AppTheme" parent="Theme.Base.AppCompat">
<item name="android:actionBarStyle">@style/MyCustomActionBar</item>
<item name="android:actionBarTabStyle">@style/MyActionBarTabViewStyle</item>
<item name="actionBarTabStyle">@style/MyActionBarTabView</item>

这样的自定义 ActionBarTab 主题

<style name="MyActionBarTabViewStyle" parent="Widget.AppCompat.Base.ActionBar.TabView">
<item name="android:background">@drawable/action_bar_stacked_background</item>

@style/MyActionBarTabView这是更简单的一种android风格。

也可以参考Styling ActionBar

【讨论】:

  • 这会改变整个标签的背景。如何仅更改指示器的颜色?
【解决方案2】:

为选项卡使用选择器并使用可绘制对象添加按下状态,例如:

<!-- Pressed -->
<!--    Non focused states -->
<item android:state_focused="false" android:state_selected="false" android:state_pressed="true" android:drawable="@drawable/tab_unselected_pressed_holo" />
<item android:state_focused="false" android:state_selected="true"  android:state_pressed="true" android:drawable="@drawable/tab_selected_pressed_holo" />

有关详细答案和版权链接,请参阅question and answer

【讨论】:

    猜你喜欢
    • 2015-06-02
    • 2017-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多