20

各タブにアイコンを配置する方法は知っていますが、問題ありません。私もこれに出くわしました:[ほとんど同じことのスタックオーバーフロースレッド][1]

その質問のリンクの 1 つをたどったところ、[これ][2] が見つかりました。

ほとんどの場合、XML で定義されたセレクターを使用するように言われましたが、確かにそうでした。しかし、それに関連付けられたIDがないため、セレクター機能をドローアブルとして取得する方法がわからないため、タブのアイコンとして使用できます。多分私はこれについて間違った方法で進んでいます。しかし、これは私が持っているものであり、明らかに何かが欠けています。

<selector
    android:id="@+id/myselector"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Non focused states -->
    <item
        android:state_focused="false"
        android:state_selected="false"
        android:state_pressed="false"
        android:drawable="@drawable/darklogo" />
    <item
        android:state_focused="false"
        android:state_selected="true"
        android:state_pressed="false"
        android:drawable="@drawable/lightlogo" />

    <!-- Focused states -->
    <item
        android:state_focused="true"
        android:state_selected="false"
        android:state_pressed="false"
        android:drawable="@drawable/lightlogo" />
    <item
        android:state_focused="true"
        android:state_selected="true"
        android:state_pressed="false"
        android:drawable="@drawable/lightlogo" />

    <!-- Pressed -->
    <item
        android:state_pressed="true"
        android:drawable="@drawable/lightlogo" />
</selector>

私のコードでは、次を使用してサンプルタブが生成されます。

  host.addTab(host.newTabSpec("three")  
                .setIndicator("map",drawables)  
                .setContent(new Intent(this, Map.class))); 

今のところ drawable は、drawable 画像リソースへの単なる参照です。セレクターをドローアブルにするにはどうすればよいですか?

これは私の質問です [1]: Android タブ アイコンの更新[2]: http://groups.google.com/group/android-evelopers/browse_thread/thread/ef3bdebcb715b385

4

2 に答える 2

22

ここに含めた XML は、case ステートメントを埋め込むことができるドローアブルを定義する方法です。割り当てられているビューの状態に応じて、異なるドローアブルを提示します。res/drawableドローアブルとして、プロジェクトのフォルダー内に xml ファイルとして保存する必要があります (例: tabselector.xml)。

Tabhost に使用するには、通常どおりに TabActivity を作成する必要があります (このチュートリアルの例に示すように)。

次に、各タブをホストに追加するときに、tabselector以下の「TAB 1」に示すように、ドローアブルをインジケーターとして指定します。

Drawable mySelector = getResources().getDrawable(R.drawable.tabselector);

mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("TAB 1", mySelector).setContent(R.id.textview1));
mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("TAB 2").setContent(R.id.textview2));

注:この時点では、アイコンの背後にあるタブの背景色を変更することはできません。

于 2009-04-22T22:50:48.330 に答える
1

ビューをインジケーターとして使用できます。このようにして、必要に応じてカスタマイズできます。

mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator(View MyView).setContent(R.id.textview1));
mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("TAB 2").setContent(R.id.textview2));

最初のタブはインジケータとしてビューを使用し、2 番目のタブは CharSequence を使用します。実際の TabSpec クラス ( http://developer.android.com/reference/android/widget/TabHost.TabSpec.html ) を見てください。

于 2010-01-20T12:44:30.700 に答える