2

私は ActionBarSherlock を使用してActionBarおり、ナビゲーション モードが設定されていNAVIGATION_MODE_LISTます。内に表示されている現在選択されているナビゲーション項目のテキストを変更したいと思いますActionBar。ナビゲーション ドロップダウン リストのアイテムの名前を変更できました。これは、 のナビゲーション ボタンをタッチしてドロップダウン リストを表示すると確認できますActionBar。ただし、ナビゲーション ドロップダウン リスト内の別のインデックス付きアイテムに切り替えない限り、 のテキストは変更されActionBarません。setSelectedNavigationItem()ActionBarinvalidateOptionsMenu()

変更されたメニュー テキストを表示する方法についてアイデアをお持ちの方がいらっしゃいましたら、よろしくお願いいたします。

4

1 に答える 1

0

これは、カスタム レイアウトを追加することで実現できます。

ここにサンプルコードがあります

最初にタブのレイアウトを定義します

tab_layout.xml

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

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="50dp" >

    <TextView
        android:id="@+id/tabName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:textColor="#000"
        android:textStyle="bold"
        android:text="TextView" />

</RelativeLayout>

そして、そのレイアウトをタブの数だけ追加します。

//bar is your AcrionBar instance
LayoutInflater factory = LayoutInflater.from(this);
          final View tabView = factory.inflate(R.layout.tab_layout, null);
          TextView text = (TextView) tabView.findViewById(R.id.tabName);
          text.setText("tab1");

          bar.addTab(
              bar.newTab().setCustomView(tabView)

                      .setTabListener(tabListener));
          final View tabView1 = factory.inflate(R.layout.tab_layout, null);
          TextView text1 = (TextView) tabView1.findViewById(R.id.tabName);
          text1.setText("tab2");
          bar.addTab(
              bar.newTab().setCustomView(tabView1)
                      .setTabListener(tabListener));
          final View tabView2 = factory.inflate(R.layout.tab_layout, null);
          TextView text2 = (TextView) tabView2.findViewById(R.id.tabName);
          text2.setText("tab3");
          bar.addTab(
              bar.newTab().setCustomView(tabView2)
                      .setTabListener(tabListener));

次に、TabListener で、選択したナビゲーション項目テキストのテキストの色を設定できます。

ActionBar.TabListener tabListener = new ActionBar.TabListener() {


        @Override
        public void onTabUnselected(Tab tab, FragmentTransaction ft) {
            // TODO Auto-generated method stub
            final View tabView = tab.getCustomView();
            TextView text = (TextView) tabView.findViewById(R.id.tabName);
            text.setTextColor(getResources().getColor(android.R.color.black)); //There you have to put your inactive color
        }

        @Override
        public void onTabReselected(Tab tab, FragmentTransaction ft) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onTabSelected(Tab tab, FragmentTransaction ft) {
            // TODO Auto-generated method stub

            final View tabView = tab.getCustomView();
            TextView text = (TextView) tabView.findViewById(R.id.tabName);
            text.setTextColor(getResources().getColor(R.color.bgColor)); //There you have to put your active color


        }
      };
于 2015-05-10T05:38:52.500 に答える