2

タブが選択されているかどうかに応じて、アクションバーのタブの色を変更するにはどうすればよいですか?

これは次のようになります。選択されている場合は黒、選択されていない/非アクティブの場合はそのような茶色です。

styles.xmlで設定しようとしましたが、機能させるための適切な名前が見つかりませんでした。

あなたの助けをどうもありがとう!

編集:私はTabsListenerに次のコードを使用しています

class MyTabsListener implements TabListener {
        private Fragment fragment;

        public MyTabsListener(Fragment ef) {
            this.fragment = ef;
        }

        public void onTabSelected(Tab tab, FragmentTransaction ft) {
            ft.replace(R.id.realtabcontent, fragment);
            ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
        }

        public void onTabUnselected(Tab tab, FragmentTransaction ft) {
        }

        public void onTabReselected(Tab tab, FragmentTransaction ft) {
        }
    }

ここに画像の説明を入力してください

4

5 に答える 5

11

上記の答えは有効ですが、不完全です。タブの状態に応じて異なるテキストの色を使用する場合は、次の手順に従う必要があります。

  1. まず、res/values/colors.xmlファイルに次の行を追加します

    <color name="text_tab_selected">#000000</color>   
    <color name="text_tab_unselected">#886C2A</color>
    
  2. /res/colortab_text.xml(または必要なものは何でも、ファイル名を追跡します)という名前でandroidxmlリソースファイルを作成します。このファイルは、ポイント@Maarekとしてセレクターである必要があります。

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.androdid.com/apk/res/android"> 
      <item android:state_selected="true" android:color="@color/text_tab_selected" /> 
      <item android:state_active="true" android:color="@color/text_tab_selected"/> 
      <item android:state_selected="false" android:color="@color/text_tab_unselected" />
      <item android:state_active="false" android:color="@color/text_tab_unselected"/>
    </selector>
    

    ここでの実際の取引に注意してくださいstate_active="false"state_active="true"

  3. Fatih Kaplanとnolomanが説明したように、テーマスタイルに新しいスタイルを追加する必要があります。次の行を開くかres/values/styles.xml、テーマを作成して追加します。

    <style name="TabTextColor" parent="@style/Widget.Sherlock.ActionBar.TabText">  
     <item name="android:textColor">@color/tab_text</item>  
    </style>  
    
  4. 最後に、アプリのテーマに次の行を追加します<style name="Theme.yourTheme" parent="@style/Theme.Sherlock">

    <item name="actionBarTabTextStyle">@style/TabTextColor</item>
    <item name="android:actionBarTextStyle>@style/TabTextColor</item>
    
  5. コロラリー:manifest.xmlファイルのアクティビティにテーマを追加することを忘れないでください。
    存在する場合は、すべてのApiバージョンの任意のスタイルファイルで手順4を繰り返すことを忘れないでください。(res/values-v11/styles.xml, res/values-v16/styles.xml and so on)
    オンラインでLint警告が表示された場合は"android:actionBarStyle"、その行を次のように置き換えます。

    <item name="android:actionBarTabTextStyle" tools:ignore="NewApi">@style/TabTextColor</item>  
    

タブキャプチャ

于 2013-05-15T10:32:34.807 に答える
8

実際、それは非常に簡単です。あなたがしなければならないのは、このような属性を定義することだけです。

<style name="tabtextcolor" parent="@style/Widget.Sherlock.ActionBar.TabText">
    <item name="android:textColor">@android:color/white</item>
</style>

その後

これらのスタイルをテーマに追加する

<item name="actionBarTabTextStyle">@style/tabtextcolor</item>
<item name="android:actionBarTabTextStyle">@style/tabtextcolor</item>
于 2013-02-13T08:31:38.227 に答える
3

これを行うには、次のようなカラーリソースを作成します。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true" android:color="#ff7a7a7a"/> <!-- pressed -->
    <item android:state_focused="true" android:color="#ff7a7a7a"/> <!-- focused -->
    <item android:state_selected="true" android:color="#ff6955b4"/> <!-- selected -->
    <item android:color="#ff7a7a7a"/> <!-- default -->

</selector>

あなたのスタイルでは、このようなことをします。私はActionBarSherlockを使用していますが、Sherlock以外のアプリではTabTextスタイルを簡単に見つけることができます。

<style name="Theme.StyledActionBar" parent="@style/Theme.Sherlock">
    <item name="actionBarTabTextStyle">@style/StyledActionBarTabText</item>
    <item name="android:actionBarTabTextStyle">@style/StyledActionBarTabText</item>
</style>

<style name="StyledActionBarTabText" parent="@style/Widget.Sherlock.ActionBar.TabText">
    <item name="android:textColor">@color/tab_text</item>
</style>
于 2012-12-03T18:31:51.850 に答える
0

TabHost.OnTabChangedイベントに登録し、mTabHost.getCurrentTabView()を呼び出してビューを取得する場合は、view.setBackgroundResource()-背景画像を設定できます...

于 2012-07-09T10:43:35.250 に答える
0
<!-- ActionBar Tab bar style -->
        <item name="actionBarTabBarStyle">@style/Sundio.ActionBarTabs</item>
        <item name="android:actionBarTabBarStyle">@style/Sundio.ActionBarTabs</item>

<style name="Sundio.ActionBarTabs" parent="Widget.Sherlock.Light.ActionBar.TabBar">
        <item name="android:background">@drawable/actionbar_tabs_selector</item>
        <item name="background">@drawable/actionbar_tabs_selector</item>
        <item name="titleTextStyle">@color/brown_text_color</item>
        <item name="android:titleTextStyle">@color/brown_text_color</item>
    </style>
于 2012-07-09T12:41:32.847 に答える