我在我的应用程序中使用以下代码将我的主页图标设置为特定的drawable:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_menu);
getSupportActionBar().setDisplayShowTitleEnabled(false);
但我遇到了“创建装饰视图和我的onCreate执行”之间的“滞后”问题,如Jake Wharton所述:ActionBar Lag in hiding title
在上面的链接上,解决方案是创建一个新样式,并在Manifest中声明它,所以我做了:
<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>
它现在工作正常,我有我的主页按钮配置,但我仍然想将图标更改为另一个特定的drawable,仅在此活动中,而不必更改Manifest中的任何android:icon
。我怎样才能做到这一点?
希望它足够清楚。谢谢。
答案 0 :(得分: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都设置正确,没有“滞后”。 :)