Androidの状態でタブをカスタマイズします
質問
各タブにアイコンを置く方法を知っていますが、それは問題ありません。私もこれに出くわしました:[ほぼ同じことでのスタックオーバーフロースレッド] [1
私はその質問のリンクの1つに従っていて、[これ] [2]を見つけました
ほとんど、それはXMLで定義されたセレクターを使用すると言われています。ただし、ID関連の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は、ケースステートメントを埋め込むことができる描画可能なものを定義する方法です。割り当てられている見解の状態に応じて、異なる描画可能なものを提示します。描画可能として、内部のXMLファイルとして保存する必要があります res/drawable
プロジェクトのフォルダー(たとえば tabselector.xml
).
Tabhostに使用するには、通常のようにタバクティブを構築する必要があります(これに示すように チュートリアルの例).
次に、各タブをホストに追加すると、 tabselector
以下の「タブ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));
注:あなた できません この時点で、アイコンの背後にあるタブの背景の色を変更します。
他のヒント
ビューをインジケーターとして使用できます。これにより、必要に応じてカスタマイズできます。
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番目のタブはチャーセンスを使用します。実際のTabSpecクラスをご覧ください(http://developer.android.com/reference/android/widget/tabhost.tabspec.html).