1

tabWidget の仕切りは正常に機能していますが、タブ ウィジェットの背景が次のように設定されている場合

tabHost.getTabWidget().getChildTabViewAt(tabId).setBackgroundResource(R.drawable.tab_indicator);

問題は、使用したにもかかわらず、背景を設定した後にタブウィジェットで仕切りを設定する方法です

tabhost.getTabWidget().setDividerDrawable(R.drawable.tab_widget_divider);

複数のタブでは機能しません。

4

1 に答える 1

14

仕切りが表示されない理由は複数ある可能性があります...

1. タブを tabHost に追加して機能させるには、setDividerDrawable() を使用する必要があります。

2.デフォルトでは、各タブインジケータのビューに設定された-2(左)、-2(右)のマージンがあります...

デフォルトでは、システムは tabWidget の背景に 9 パッチのドローアブルを使用しており、左側と右側に少なくとも 2 ピクセルが透明 (またはシャドウ効果の場合は半透明) のままになっています。

私のカスタムタブの例

1.デモンストレーション


Android 2.3.3 でオリジナル システム 9 パス ドローアブル (選択)ここに画像の説明を入力

2. タブ ウィジェットの背景用に 9 パスのドローアブルをストックします。これらを実験に使用できます


9 パスのドローアブルを使用したくない場合は 、余白を 0 に設定して、タブ ビューが仕切りに重ならないようにすることができます。コードは次のとおりです。

    View v;
    int count = tw.getTabCount();
    for (int i = 0; i < count; i++) {
        v = tw.getChildTabViewAt(i);
        v.setBackgroundResource(R.drawable.bg_tab);
        ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
        params.setMargins(0, 0, 0, 0);
    }
于 2012-02-07T06:09:04.393 に答える