我使用版本为23.1.0
的Google支持库。
compile 'com.android.support:appcompat-v7:23.1.0'
compile 'com.android.support:recyclerview-v7:23.1.0'
compile 'com.android.support:cardview-v7:23.1.0'
compile 'com.android.support:preference-v7:23.1.0'
compile 'com.android.support:design:23.1.0'
我正在重复使用在引入材料设计之前使用支持库版本的主题文件。
<style name="AppTheme.StatusBarOverlay.Main" parent="@style/AppTheme.Main">
<item name="android:windowContentOverlay">@null</item>
</style>
<style name="AppTheme.Main" parent="@style/AppBaseTheme.Main">
<item name="windowActionBar">false</item>
</style>
<style name="AppBaseTheme.Main" parent="@style/Theme.AppCompat.Main">
<item name="colorPrimary">@color/main_color</item>
<item name="colorPrimaryDark">@color/main_color_dk</item>
</style>
<style name="Theme.AppCompat.Main" parent="@style/Base.Theme.AppCompat.Main" />
<style name="Base.Theme.AppCompat.Main" parent="@style/Base.V7.Theme.AppCompat" />
<style name="Theme.CustomDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowBackground">@drawable/trans_draw</item>
<item name="android:windowNoTitle">true</item>
</style>
我通过在清单
中设置主题让MainActivity
使用了该样式
<activity
android:name=".activities.MainActivity"
android:label="@string/title_activity_main"
android:theme="@style/AppTheme.StatusBarOverlay.Main" >
</activity>
检索操作栏时
ActionBar actionBar = getSupportActionBar();
引发了以下异常。
Caused by: java.lang.IllegalArgumentException: AppCompat does not support the current theme features: { windowActionBar: false, windowActionBarOverlay: false, android:windowIsFloating: false, windowActionModeOverlay: false, windowNoTitle: false }
at android.support.v7.app.AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:423)
at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:280)
at android.support.v7.app.AppCompatDelegateImplV7.initWindowDecorActionBar(AppCompatDelegateImplV7.java:173)
at android.support.v7.app.AppCompatDelegateImplBase.getSupportActionBar(AppCompatDelegateImplBase.java:89)
at android.support.v7.app.AppCompatActivity.getSupportActionBar(AppCompatActivity.java:79)
at com.dynamicwebapac.commerce.mobile.custom.CustomActivity.setupActionBar(CustomActivity.java:39)
at com.dynamicwebapac.commerce.mobile.custom.CustomActivity.onCreate(CustomActivity.java:25)
at com.dynamicwebapac.commerce.mobile.activities.MainActivity.onCreate(MainActivity.java:181)
at android.app.Activity.performCreate(Activity.java:5933)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(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)
介绍材料设计后,Android支持库发生了什么变化?我该如何解决当前的问题?
答案 0 :(得分:1)
使用新材料支持库,我们设置了像 styles.xml
这样的主题<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
同样在清单
中android:theme="@style/AppTheme"
然后我们使用工具栏作为操作栏。在父布局中执行此操作
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary" />
我们使用
在 Java源中进行设置Toolbar toolbar=(Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
答案 1 :(得分:0)
Material Design支持使用更灵活的Toolbar
,...等因此AppCompat
库提供的主题或样式没有ActionBar
,或者你可以假设提供了支持ActionBar
,因此需要禁用系统默认ActionBar
。
现在按照Colns Abt:
的建议执行以下两个步骤中的任何一个步骤在结尾添加NoActionBar
Theme.AppCompat.NoActionBar
样式
或者
在自定义style
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
进一步遵循Colns Abt给出的步骤。