1

ActionBarSherlock をスタイリングするとき、接頭辞付きの属性を使用する必要がある場合、接頭辞なしの属性を使用する必要がある場合、およびその両方を使用する必要がある場合に疑問に思いました。例えば:

<item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
<item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>

ActionBarSherlock Web サイトでこの説明を見つけました。

ミラーリングされた属性

Android のテーマ システムの制限により、テーマのカスタマイズは 2 つの属性で宣言する必要があります。通常の android-prefixed 属性はテーマをネイティブ アクション バーに適用し、prefixed 属性はカスタム実装用です。両方のテーマ API はまったく同じであるため、カスタマイズを 2 回実装するのではなく、2 回参照するだけで済みます。

これが何を意味するかを正確に伝える最も簡単な方法は、例を使用することです。以下は、上記の「Styled」の例の完全なテーマです。

<style name="Theme.Styled" parent="Theme.Sherlock.Light.DarkActionBar">
    <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
    <item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
</style>

<style name="Widget.Styled.ActionBar" parent="Widget.Sherlock.Light.ActionBar.Solid.Inverse">
    <item name="background">@drawable/bg_striped</item>
    <item name="android:background">@drawable/bg_striped</item>

    <item name="backgroundSplit">@drawable/bg_striped_split</item>
    <item name="android:backgroundSplit">@drawable/bg_striped_split</item>
</style>

接頭辞のない属性は、API レベル 11 より前には存在しなかった属性にのみ使用する必要があると思いandroid:backgroundましbackgroundた。android:backgroundAPI レベル 1 から存在します。誰かがこれらのミラー化された属性について詳細を教えてもらえますか?

4

2 に答える 2

1

あなたが引用したActionBarSherlockのドキュメントについて私が理解していることから、ActionBarSherlockがネイティブバージョンのActionBarを使用する場合、android-prefixed属性(「通常の」ActionBarを使用した場合に設定する唯一の属性)が使用されます(つまり、 Android 3+ を実行しているデバイス (利用可能な場合)、接頭辞なしのバージョンは、ActionBarSherlock が実際に ActionBar コンポーネントの独自の実装を使用する必要がある古いバージョンで使用されます。

つまり、android プレフィックス付き属性は Android ネイティブ機能で使用され、プレフィックスなしバージョンはカスタム コンポーネントで使用されます。

とにかく、 ActionBarSherlock オブジェクトのテーマを設定するときは、常にプレフィックス付きとプレフィックスなしの両方の属性を設定する必要があるようです。

于 2013-01-04T09:40:10.297 に答える
0

単純なルールは、継承元の場所であればparent="Widget.Sherlock.etc"、二重の属性を持つ必要があります。

例外は、あなたのスタイルをその/直接に渡すだけなので、直接スタイルは好きではTextありButtonませんが、abs__styles.xmlで定義された親/現在のスタイルから常に継承します。 ..TextViewButton

于 2013-01-04T09:33:53.023 に答える