各タブにアイコンを配置する方法を知っています。問題ありません。私もこれに遭遇しました:[ほぼ同じものでスタックオーバーフロースレッド] [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)));
現在、ドローアブルはドローアブル画像リソースへの参照にすぎません。セレクターを描画可能にするにはどうすればよいですか?
これは私の質問です[1]: 更新Androidタブアイコン [2]: http://groups.google.com/group/Android- evelopers/browse_thread/thread/ef3bdebcb715b385
ここに含めたXMLは、caseステートメントを埋め込むことができるドローアブルを定義する方法です。割り当てられているビューの状態に応じて、異なるドローアブルが表示されます。ドローアブルとして、プロジェクトのres/drawable
フォルダー内にxmlファイルとして保存する必要があります(例:tabselector.xml
)。
これをTabhostに使用するには、通常のようにTabActivityを構築する必要があります(この チュートリアルの例 に示すように)。
次に、各タブをホストに追加するときに、下の「タブ1」に示すように、tabselector
ドローアブルをインジケーターとして指定します。
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));
注:この時点では、アイコンの背後にあるタブの背景の色を変更できません。
ビューをインジケーターとして使用することもできます。これにより、希望どおりにカスタマイズできます。
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)。