首先,我创建了两个样式,一个是值,另一个是值-21。
在values / styles.xml中是
<resources>
<style name="AppTheme" parent="Theme.AppCompat"></style>
</resources>
在values-v21 / styles.xml中
<resources>
<style name="AppTheme" parent="android:Theme.Material"></style>
</resources>
我的gradle文件(app.gradle)
由于ActionBarActivity
已弃用,因此我使用AppCompatActivity
。
当我设置这两个样式值并在AppCompatActivity
中扩展MainActivity
时,我得到了例外:
java.lang.IllegalStateException: You need to use a Theme.AppCompat
theme (or descendant) with this activity.
我做了两个不同的更改,而且异常再也没有出现过:
如果我想使用设计主题,我应该扩展“android.app.Activity”吗?
或者,是否有另一种使用材料设计主题的方法?
感谢。
答案 0 :(得分:3)
在styles.xml
文件中替换以下主题。
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
<style name="MyMaterialTheme" parent="MyMaterialTheme.Base">
<item name="android:windowContentTransitions">true</item>
<item name="android:windowAllowEnterTransitionOverlap">true</item>
<item name="android:windowAllowReturnTransitionOverlap">true</item>
</style>
<style name="MyMaterialTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
并使用在MainActivity中扩展AppCompatActivity。
最后在Manifestfile中使用此主题。
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/MyMaterialTheme">
</application>
Gradle文件依赖项。
dependencies
{
compile fileTree(dir: 'libs', include: ['*.jar']) compile
'com.android.support:appcompat-v7:23.3.0' compile
'com.android.support:recyclerview-v7:23.1.1' compile
'com.android.support:cardview-v7:23.2.1' // For NavigationView Using Menu
'compile 'com.android.support:design:23.3.0' // For Google Map compile
'com.google.android.gms:play-services-maps:9.8.0'
}
根据需要编辑我的主题。 希望它能帮助......
答案 1 :(得分:2)
在style.xml文件中写下以下主题。
green
并在您的`MainActivity
中编写扩展AppCompatActivity并在Manifest.xml文件中编写您的应用程序标记,如下所示:
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">any_color_code</item>
<item name="colorPrimaryDark">any_color_codek</item>
<item name="colorAccent">any_color_code</item>
</style>
答案 2 :(得分:0)
试试这个:
<resources>
<style name="AppTheme" parent="parent="Theme.AppCompat.Light"></style>
</resources>
答案 3 :(得分:0)
试试这个 style.xml
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="MyRadioButton" parent="Theme.AppCompat.Light">
<item name="colorControlNormal">@color/colorRadioon</item>
<item name="colorControlActivated">@color/colorRadioof</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
</resources>
style.xml(第21版)
<resources>>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
</resources>
使用以下代码更新您的Gradle文件
在您的gradle中添加aaptOption
aaptOptions {
additionalParameters "--no-version-vectors"
}
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.jmtechnologies.askuscash"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dexOptions {
javaMaxHeapSize "2g"
}
// important to run code on kitkat
aaptOptions {
additionalParameters "--no-version-vectors"
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
// multidex
compile 'com.android.support:multidex:1.0.0'
compile 'com.android.support:appcompat-v7:25.1.0'
compile 'com.android.support:design:25.1.0'
compile 'com.android.support:recyclerview-v7:25.1.0'
}