4

このテーマは問題なく動作し、ActionBar の 3 つのタブの 3 つのカスタム スタイルを参照します。

しかし、"dividerPadding" はそれらのいずれにも影響を与えません - API 17 デバイスで実行されます。

 <style name="Theme.AppEmptyTitleBar" parent="android:style/Theme.Holo">
        <item name="android:actionBarStyle">@style/AB</item>
        <item name="android:actionBarTabStyle">@style/ABT</item>
        <item name="android:actionBarTabBarStyle">@style/ABTB</item>
    </style>

<style name="AB" parent="android:style/Widget.Holo.ActionBar">
    <item name="android:dividerPadding">20dip</item>
</style>
<style name="ABT" parent="android:style/Widget.Holo.Light.ActionBar.TabView">
    <item name="android:dividerPadding">20dip</item>
</style>
<style name="ABTB" parent="android:style/Widget.Holo.ActionBar.TabBar">
    <item name="android:dividerPadding">20dip</item>
</style>
4

1 に答える 1

3

まず、dividerPadding属性は (私の知る限り)*ActionBar.TabBarスタイルにのみ適用されます。

ネイティブを使用する非常に基本的なアプリケーションとActionBarAPI 17 を提供するデバイスを使用して、スタイルをテストしました。dividerPadding属性を異なる値に設定し、残りの属性はデフォルト値のままにしました。結果は次のとおりです。

  • dividerPadding="0dip":

ここに画像の説明を入力

  • dividerPadding="15dip":

ここに画像の説明を入力

  • dividerPadding="20dip":

ここに画像の説明を入力

ご覧のとおり、最後の画像では仕切りがなくなっています。したがって、私の最初のアドバイスは、それが表示されるかどうかを確認することです。それ以外は、dividerPadding期待どおりに機能しているようです。

2 つ目のアドバイスは、Android プラットフォームがさまざまなvalues-*ディレクトリに配置されたスタイル リソースを処理する方法から来ています。私の推測では、デフォルトのvaluesディレクトリでアクション バーのスタイルを利用している可能性があります。values-*その後、互換性のあるディレクトリ (例: values-vXwhere X <= 17)でこれらのスタイルのオーバーライドを提供すると、そこからのスタイルvaluesは無視されます。例として、これらのサンプル スタイルをvalues/styles.xmlファイルに配置したとします。

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="AppTheme" parent="@android:style/Theme.Holo">
        <item name="android:actionBarTabBarStyle">@style/ABTB</item>
    </style>

    <style name="ABTB" parent="@android:style/Widget.Holo.ActionBar.TabBar">
        <item name="android:dividerPadding">0dip</item>
    </style>
</resources>

次に、このスタイル定義を に配置するとvalues-v17/styles.xml:

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="AppTheme" parent="@android:style/Theme.Holo">
    </style>
</resources>

スタイルをオーバーライドし、スタイル全体 (属性値を含むAppTheme) を効果的に「リセット」(技術的には無視) します。実際には、スタイルに加えられた変更は表示されません。actionBarTabBarStyledividerPaddingABTB

編集

うん、私はあなたがそれを知っていると思いました、ごめんなさい:(dividerPadding値は以下にのみ適用されます:

  • TabWidget(タブ ラベルのコンテナー) がタブを水平方向に描画するときの仕切りの上部と下部。
  • TabWidgetタブを垂直に描画したときの仕切りの左右。

これはまさにスクリーンショットに表示されているものです。私の知る限り、divider追加のパディングを強制するドローアブルに設定する必要があります。layerすべてのレイヤーにパディングを明示的に設定できるため、ドローアブルはその目的に最適であると思います。

于 2013-02-11T15:21:17.910 に答える