Android 自定义操作栏
Android Customized Actionbar
我正在尝试在 android 应用程序中自定义操作栏。
我关注了google tutorial
但是没有用。
这是我的代码 themes.xml
<?xml version="1.0" encoding="utf-8"?>
<color name="custom_white_color">#ffffff</color>
<color name="custom_blue_color">#2E4372</color>
<style name="CustomActionBarTheme" parent="@android:style/Theme.Holo.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/MyActionBar</item>
<item name="actionBarStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar"
parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
<item name="android:background">@color/custom_white_color</item>
</style>
在"AndroidManifest"我为应用程序调用这个主题
android:theme="@style/CustomActionBarTheme" >
但是当我执行这段代码时出现了以下错误
03-03 00:44:43.456 2467-2467/br.com.lzl.colorlist E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: br.com.lzl.colorlist, PID: 2467
java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.lzl.colorlist/br.com.lzl.colorlist.HomeActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access0(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:151)
at android.support.v7.app.ActionBarActivityDelegateBase.onCreate(ActionBarActivityDelegateBase.java:138)
at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:123)
at br.com.lzl.colorlist.HomeActivity.onCreate(HomeActivity.java:20)
at android.app.Activity.performCreate(Activity.java:5933)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
如果我尝试使用 Theme.Appcompat 自定义不起作用。
有人知道解决这个问题的线索吗?
从现在开始谢谢你!
对于 Holo 主题:
将您的 ActionBarActivity
切换为 Activity
,您将能够按照该教程进行操作。
对于Material主题:
将您的父主题更改为 Theme.AppCompat.Light
(或类似的东西)并通过 colorPrimary
属性 自定义操作栏背景,通过 [=15= 自定义操作栏文本颜色] 属性:
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="colorPrimary">#FFF</item>
<item name="android:textColorPrimary">#2E4372</item>
</style>
见http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html
我解决了我的问题。我做了这个代码。
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);
getSupportActionBar().setTitle(Html.fromHtml("<font color='#2E4372'; font-weight: bold;> ColorList </font>"));
getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.ic_test_menu_2));
我用了一个简单的主题
<style name="ThemeCustom" parent="Theme.AppCompat.Light">
<item name="android:windowContentOverlay">@null</item>
</style>
所以我得到了一个白色的 actionBar,但是主题的菜单按钮仍然是黑色的。
没问题。
谢谢大家
我正在尝试在 android 应用程序中自定义操作栏。
我关注了google tutorial
但是没有用。
这是我的代码 themes.xml
<?xml version="1.0" encoding="utf-8"?>
<color name="custom_white_color">#ffffff</color>
<color name="custom_blue_color">#2E4372</color>
<style name="CustomActionBarTheme" parent="@android:style/Theme.Holo.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/MyActionBar</item>
<item name="actionBarStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar"
parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
<item name="android:background">@color/custom_white_color</item>
</style>
在"AndroidManifest"我为应用程序调用这个主题
android:theme="@style/CustomActionBarTheme" >
但是当我执行这段代码时出现了以下错误
03-03 00:44:43.456 2467-2467/br.com.lzl.colorlist E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: br.com.lzl.colorlist, PID: 2467
java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.lzl.colorlist/br.com.lzl.colorlist.HomeActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access0(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:151)
at android.support.v7.app.ActionBarActivityDelegateBase.onCreate(ActionBarActivityDelegateBase.java:138)
at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:123)
at br.com.lzl.colorlist.HomeActivity.onCreate(HomeActivity.java:20)
at android.app.Activity.performCreate(Activity.java:5933)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
如果我尝试使用 Theme.Appcompat 自定义不起作用。
有人知道解决这个问题的线索吗?
从现在开始谢谢你!
对于 Holo 主题:
将您的 ActionBarActivity
切换为 Activity
,您将能够按照该教程进行操作。
对于Material主题:
将您的父主题更改为 Theme.AppCompat.Light
(或类似的东西)并通过 colorPrimary
属性 自定义操作栏背景,通过 [=15= 自定义操作栏文本颜色] 属性:
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="colorPrimary">#FFF</item>
<item name="android:textColorPrimary">#2E4372</item>
</style>
见http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html
我解决了我的问题。我做了这个代码。
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);
getSupportActionBar().setTitle(Html.fromHtml("<font color='#2E4372'; font-weight: bold;> ColorList </font>"));
getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.ic_test_menu_2));
我用了一个简单的主题
<style name="ThemeCustom" parent="Theme.AppCompat.Light">
<item name="android:windowContentOverlay">@null</item>
</style>
所以我得到了一个白色的 actionBar,但是主题的菜单按钮仍然是黑色的。
没问题。
谢谢大家