14

アプリケーションで次のコードを使用して、ホームアイコンを特定のドローアブルに設定しました。

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_menu);
getSupportActionBar().setDisplayShowTitleEnabled(false);

しかし、Jake Wharton: ActionBar Lag in hidden titleで説明されているように、「装飾ビューの作成とonCreateの実行」の間の「ラグ」に問題がありました。

上記のリンクでは、解決策は新しいスタイルを作成し、それをマニフェストで宣言することでした。そのため、私は次のことを行いました。

<resources>
<style name="AppTheme" parent="android:Theme.Light" />

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

<style name="WATheme.ActionBar" parent="Widget.Sherlock.Light.ActionBar.Solid">
    <item name="android:displayOptions">homeAsUp|showHome</item>
    <item name="displayOptions">homeAsUp|showHome</item>
</style>
</resources>

マニフェスト:

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:theme="@style/WATheme"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

android:iconこれで正常に動作し、ホームボタンがアップ構成になっていますが、マニフェストで何も変更せずに、このアクティビティでのみアイコンを別の特定のドローアブルに変更したいと思います。どうすればそれを達成できますか?

それが十分に明確であったことを願っています。ありがとうございました。

4

1 に答える 1

28

わかりました。何が欠けているのかを理解してください。styles.xmlで、私がしなければならなかったのは、次の行を追加することだけです。

<item name="android:icon">@drawable/ic_menu</item>
<item name="icon">@drawable/ic_menu</item>

だから最後に私はこのようなものを持っています:

<resources>
<style name="AppTheme" parent="android:Theme.Light" />

<style name="WATheme" parent="Theme.Sherlock.Light">
    <item name="android:actionBarStyle">@style/WATheme.ActionBar</item>
    <item name="actionBarStyle">@style/WATheme.ActionBar</item>
    <item name="android:icon">@drawable/ic_menu</item>
    <item name="icon">@drawable/ic_menu</item>
</style>

<style name="WATheme.ActionBar" parent="Widget.Sherlock.Light.ActionBar.Solid">
    <item name="android:displayOptions">homeAsUp|showHome|showTitle</item>
    <item name="displayOptions">homeAsUp|showHome|showTitle</item>
</style>
</resources>

すべてのdisplayOptionsが正しく設定され、「ラグ」がなく、正常に動作するようになりました。:)

于 2012-10-20T00:53:55.590 に答える