0

アクション バーのにカスタム タブを作成しようとしています。私のアクション バーは既に他のウィジェットに使用されているため、タブをアクション バーに移動することはできません。タブには画像とテキストの両方が必要です。私は2つの問題を抱えています:

1)私がこれを行うとき:

mTabHost.addTab(mTabHost.newTabSpec("Local").setIndicator("Local", getResources().getDrawable(R.drawable.local_selector)).setContent(R.id.local_image));

テキストは表示されますが、画像は表示されません。私がこれを行う場合:

mTabHost.addTab(mTabHost.newTabSpec("Local").setIndicator("", getResources().getDrawable(R.drawable.local_selector)).setContent(R.id.local_image));

画像は見えますが、必要なテキストが含まれていません。

2) テキストと画像の背景色が TabWidget の色と一致しません。アプリ全体のデフォルトの背景色と一致します。

また、RelativeLayout でタブを作成し、次のように実装しようとしました。

RelativeLayout localView = (RelativeLayout)inflater.inflate(R.layout.local_tab, null);
mTabHost.addTab(mTabHost.newTabSpec("Local").setIndicator(localView).setContent(R.id.local_image));

これにより、目的の画像とテキストの組み合わせが正しい背景色で表示されますが、タブがタブのように見えなくなります。仕切りがなく、選択したタブが点灯しません。

4

2 に答える 2

1

問題の解決策を見つけました。私のテーマでは、android:windowBackground の代わりに android:background を設定していました。android:windowBackground を使用すると、色の連携が向上しました。

次に、テキストを含む新しい画像を作成しました。何度も微調整した結果、最終的には希望どおりの外観になりました。

于 2013-03-13T16:53:29.663 に答える
1

これを試してみてください。

tabHost = getTabHost();
    TabSpec spec_info = tabHost.newTabSpec(getString(R.string.info));
    spec_info.setIndicator(getString(R.string.info), null);
    Intent Intent_info = new Intent(this, RestaurantInfoActivity.class);
    spec_info.setContent(Intent_info);
    tabHost.addTab(spec_info);
    tabHost.getTabWidget().getChildTabViewAt(0).setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_selector));

xml

<TabHost
                xmlns:android="http://schemas.android.com/apk/res/android"
                android:id="@android:id/tabhost"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" >

                <LinearLayout
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:orientation="vertical" 
                    android:fadingEdge="none"
                    android:overScrollMode="never"
                    >

                    <TabWidget
                        android:id="@android:id/tabs"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentLeft="true"
                        android:tabStripEnabled="false" />

                    <FrameLayout
                        android:id="@android:id/tabcontent"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent" />
                </LinearLayout>
            </TabHost>

セレクタ

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- When selected, use white-->
<item android:drawable="@drawable/active_tab"
      android:state_selected="true" />
<!-- When not selected, use grey -->
<item android:drawable="@drawable/in_active_tab" >
</item>

于 2013-03-12T04:24:51.630 に答える