我正在开发一款安卓应用,但我在思考主题的问题。
如果我没有声明我的安卓应用的主题,那么会使用哪个主题?我可以在哪里找到这些信息?选择主题的标准是什么?
我在考虑,如果我想要自定义我的整个应用,我需要扩展一个主题并自定义所有我想要定制的项。
如果它默认假设其中一个主题,怎么办?我还需要再自定义吗?我如何知道哪个是默认主题?
我正在开发一款安卓应用,但我在思考主题的问题。
如果我没有声明我的安卓应用的主题,那么会使用哪个主题?我可以在哪里找到这些信息?选择主题的标准是什么?
我在考虑,如果我想要自定义我的整个应用,我需要扩展一个主题并自定义所有我想要定制的项。
如果它默认假设其中一个主题,怎么办?我还需要再自定义吗?我如何知道哪个是默认主题?
AppCompat
已经出来了... - shkschneider最好自己定义默认主题,而不是依赖于Android选择默认主题。这是因为不同版本的Android可能有完全不同的默认主题,可能会破坏您的布局。
您可以在AndroidManifest.xml
中声明应用程序的主题。
<application android:theme="@style/MyTheme" .....>
然后在res/values
文件夹中,您需要编辑或添加一个名为themes.xml
的文件,并添加以下内容:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="MyTheme" parent="@android:style/Theme.Holo">
... customize your theme here
</style>
</resources>
您可以编辑主题的parent
,将其设置为任何您想要的内容...
如果您不想进行任何自定义,也可以直接在AndroidManifest.xml
中使用@android:style/Theme.Holo
。
如果 API 版本低于 11,请使用Theme.AppCompat.Holo
。
/**
* Returns the most appropriate default theme for the specified target SDK version.
* <ul>
* <li>Below API 11: Gingerbread
* <li>APIs 11 thru 14: Holo
* <li>APIs 14 thru XX: Device default dark
* <li>API XX and above: Device default light with dark action bar
* </ul>
*
* @param curTheme The current theme, or 0 if not specified.
* @param targetSdkVersion The target SDK version.
* @return A theme resource identifier
* @hide
*/
public static int selectDefaultTheme(int curTheme, int targetSdkVersion) {
return selectSystemTheme(curTheme, targetSdkVersion,
com.android.internal.R.style.Theme,
com.android.internal.R.style.Theme_Holo,
com.android.internal.R.style.Theme_DeviceDefault,
com.android.internal.R.style.Theme_DeviceDefault_Light_DarkActionBar);
}
/** @hide */
public static int selectSystemTheme(int curTheme, int targetSdkVersion, int orig, int holo,
int dark, int deviceDefault) {
if (curTheme != 0) {
return curTheme;
}
if (targetSdkVersion < Build.VERSION_CODES.HONEYCOMB) {
return orig;
}
if (targetSdkVersion < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
return holo;
}
if (targetSdkVersion < Build.VERSION_CODES.CUR_DEVELOPMENT) {
return dark;
}
return deviceDefault;
}