簡體   English   中英

以編程方式更改ActionBar選項卡的顏色

[英]Change ActionBar tab color programmatically

我的應用程序中包含以下ActionBar選項卡。 我想知道改變顏色以匹配我的應用的最佳方法是什么。

在此處輸入圖片說明

  1. 每個選項卡的內容都有不同的背景。 如何為每個標簽添加單獨的背景色?
  2. 如何將淺藍色條帶顏色更改為白色以使其具有3D外觀?

我看到了以下代碼:

ActionBar ab = getActionBar();
//ab.setStackedBackgroundDrawable(new ColorDrawable(Color.parseColor("#0000ff")));

但是那條線將所有選項卡的顏色更改為一種顏色。

我的應用中的Tab代碼為:

ActionBar ab = getActionBar();
        //ab.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#0000ff"))); not changing the tab color
        //ab.setStackedBackgroundDrawable(new ColorDrawable(Color.parseColor("#0000ff")));
        ab.setNavigationMode( ActionBar.NAVIGATION_MODE_TABS );

        Tab tab = ab.newTab()
                .setText( "TY1" )
                .setTabListener( 
                        new MyTabListener( this, TY1.class.getName() ) );
        ab.addTab( tab );

        tab = ab.newTab()
                .setText( "TY2" )
                .setTabListener( 
                        new MyTabListener( this, TY2.class.getName() ) );
        ab.addTab( tab );

        tab = ab.newTab()
                .setText( "ty3" )
                .setTabListener( 
                        new MyTabListener( this, TY3.class.getName() ) );
        ab.addTab( tab );

任何和所有幫助表示贊賞。 如果有人指出正確的方向,我也可以使用XML。

您可以為每個選項卡設置自定義視圖。 為選項卡創建一個新的布局資源(它可以只是一個TextView)。 將其背景留為空白,並為選擇指示器制作一個九個補丁的可繪制圖形。 使用獲取LayoutInflater

LayoutInflater inflater = getSystemService(LAYOUT_INFLATER_SERVICE);

然后,對於每個選項卡,您可以執行以下操作:

Tab tab = ab.newTab()
        .setText("TY1")
        .setTabListener(new MyTabListener(this, TY1.class.getName()));
View tabView = inflater.inflate(R.layout.my_tab_layout, null);
tabView.setBackgroundColor(...); // set custom color
tab.setCustomView(tabView);
ab.addTab(tab);

您可以通過定義自定義樣式來更改ActionBar的背景顏色,如下所示:

<resources>
    <style name="MyTheme" parent="@android:style/Theme.Holo.Light">
        <item name="android:actionBarStyle">@style/MyActionBar</item>
    </style>
    <style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
        <item name="android:background">ANY_HEX_COLOR_CODE</item>
    </style>
</resources>

轉到: http : //jgilfelt.github.io/android-actionbarstylegenerator/#name=example&compat=holo&theme=light&actionbarstyle=solid&texture=0&hairline=0&backColor=E4E4E4%2C100&secondaryColor=D6D6D6%2C100&tabColor=33B5E5%2C100&2%25% 2C100&cabBackColor = FFFFFF%2C100&cabHighlightColor = 33B5E5%2C100

並創建您的操作欄,然后下載。 下載后,您可以在項目中使用它。

對於那些尋求有關如何創建自定義選項卡視圖然后更改選項卡格式的更詳細示例代碼的人,您可以在https://stackoverflow.com/a/28389366/3268329上看到我的答案。 該問題與選擇特定選項卡時更改選項卡文本的顏色有關,但是您可以輕松地修改代碼以更改背景,或者執行其他任何所需的操作。

https://stackoverflow.com/a/18491600/3268329(S.Thiongane的回答)還顯示了如何設置不同的背景資源。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM