我想将Material Theme应用到我的应用程序中,并使其在不运行Lolipop的设备上也可用。我的应用目标是:android:minSdkVersion="14
和android:targetSdkVersion="21"
。我做了一个简单的测试应用程序,并将styles.xml中的主题更改为:
<style name="AppTheme" parent="@Theme.AppCompat.Light">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/accent</item>
<item name="actionBarStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar"
parent="@Widget.AppCompat.Light.ActionBar.Solid">
<item name="android:icon">@drawable/ic_launcher</item>
<item name="icon">@drawable/ic_launcher</item>
</style>
</resources>
我的测试应用看起来不错。问题是:我的所有活动是否应该在使用AppCompat的应用程序中扩展ActionBarActivity
而不是Activity
?如果是这样,为什么?
答案 0 :(得分:1)
实际上取决于你正在建造什么。在大多数情况下,答案是是的,所有答案都应该延伸ActionBarActivity
如果每项活动都延长ActionBarActivity
,您可以在android:theme="AppTheme"
application
标记下使用AndroidManifest.xml
。
<application android:theme="@style/AppTheme" ... />
另一方面,如果由于某种原因你不能总是扩展ActionBarActivity
,那么
主题"AppTheme"
应该与ActionBarActivity
配对,而Activity
应该具有基本的Android主题,例如。 android:Theme.Holo.Light
的每个activity
标记AndroidManifest.xml
。
<activity android:name=".ActionBarActivityChildren"
android:theme="@style/AppTheme" ... />
<activity android:name=".ActivityChildren"
android:theme="android:Theme.Holo.Light" ... />
因此,有可能不总是扩展ActionBarActivity
,但实际上你永远不会这样做。
答案 1 :(得分:0)
您不需要扩展ActionBarActivity。在Android Studio中,您可以在/app/build.gradle文件中声明.jars等,如下所示:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.0'
}
确保您的版本(此处为21.0.0)不高于从SDK下载的buildToolsVersion(当前为21.0.2)。
在Eclipse中,您可以通过project.properties文件获取库,如下所示:
target=android-21
android.library.reference.1=../appcompat_v7_8
希望有所帮助!