android 清单操作栏徽标
android manifest action bar logo
这很简单,但一直让我感到悲伤。我希望我的操作栏显示清单中 android:logo 指定的 @drawable 资源:
<application
android:allowBackup="true"
android:label="@string/app_name"
android:icon="@drawable/logo">
<activity
android:name=".MainActivity"
android:theme="@style/CustomActionBarTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
如果我删除 android:theme 属性,徽标会出现,但由于主 activity 中 super.onCreate(savedInstanceState);
处的某些非法状态异常,应用程序会立即崩溃。如果我离开主题,操作栏为空白,背景颜色设置在 activity.
主题:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- the theme applied to the application or activity -->
<style name="CustomActionBarTheme"
parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/MyActionBar</item>
<item name="actionBarStyle">@style/MyActionBar</item>
</style>
<!-- ActionBar styles -->
<style name="MyActionBar"
parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="android:icon">@drawable/logo</item>
<item name="android:background">#F7430C</item>
</style>
Activity设置背景:
public class MainActivity extends ActionBarActivity {
private ActionBar bar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
我只需要一个带有徽标和背景颜色#F7430C 的操作栏。
试试这个,如果有效请告诉我。
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="android:actionBarStyle">@style/FooBar</item>
<item name="actionBarStyle">@style/FooBar</item>
</style>
<!-- Base application theme. -->
<style name="FooBar"
parent="Widget.AppCompat.Light.ActionBar">
<item name="android:icon">@drawable/logo</item>
<item name="icon">@drawable/logo</item>
<item name="android:background">#F7430C</item>
<item name="background">#F7430C</item>
</style>
</resources>
编辑
只有在 activity.
中将 actionBar.setDisplayShowHomeEnabled()
设置为 true 时,以上解决方案才有效
我是这样解决这个问题的:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="android:actionBarStyle">@style/FooBar</item>
<item name="actionBarStyle">@style/FooBar</item>
</style>
<!-- Base application theme. -->
<style name="FooBar"
parent="Widget.AppCompat.Light.ActionBar">
<item name="android:icon">@drawable/logo</item>
<item name="icon">@drawable/logo</item>
<item name="android:background">#F7430C</item>
<item name="background">#F7430C</item>
</style>
在 activity 中充气后,我必须设置:
bar.setDisplayShowHomeEnabled(true);
这很简单,但一直让我感到悲伤。我希望我的操作栏显示清单中 android:logo 指定的 @drawable 资源:
<application
android:allowBackup="true"
android:label="@string/app_name"
android:icon="@drawable/logo">
<activity
android:name=".MainActivity"
android:theme="@style/CustomActionBarTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
如果我删除 android:theme 属性,徽标会出现,但由于主 activity 中 super.onCreate(savedInstanceState);
处的某些非法状态异常,应用程序会立即崩溃。如果我离开主题,操作栏为空白,背景颜色设置在 activity.
主题:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- the theme applied to the application or activity -->
<style name="CustomActionBarTheme"
parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/MyActionBar</item>
<item name="actionBarStyle">@style/MyActionBar</item>
</style>
<!-- ActionBar styles -->
<style name="MyActionBar"
parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="android:icon">@drawable/logo</item>
<item name="android:background">#F7430C</item>
</style>
Activity设置背景:
public class MainActivity extends ActionBarActivity {
private ActionBar bar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
我只需要一个带有徽标和背景颜色#F7430C 的操作栏。
试试这个,如果有效请告诉我。
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="android:actionBarStyle">@style/FooBar</item>
<item name="actionBarStyle">@style/FooBar</item>
</style>
<!-- Base application theme. -->
<style name="FooBar"
parent="Widget.AppCompat.Light.ActionBar">
<item name="android:icon">@drawable/logo</item>
<item name="icon">@drawable/logo</item>
<item name="android:background">#F7430C</item>
<item name="background">#F7430C</item>
</style>
</resources>
编辑
只有在 activity.
中将actionBar.setDisplayShowHomeEnabled()
设置为 true 时,以上解决方案才有效
我是这样解决这个问题的:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="android:actionBarStyle">@style/FooBar</item>
<item name="actionBarStyle">@style/FooBar</item>
</style>
<!-- Base application theme. -->
<style name="FooBar"
parent="Widget.AppCompat.Light.ActionBar">
<item name="android:icon">@drawable/logo</item>
<item name="icon">@drawable/logo</item>
<item name="android:background">#F7430C</item>
<item name="background">#F7430C</item>
</style>
在 activity 中充气后,我必须设置:
bar.setDisplayShowHomeEnabled(true);