Тема по умолчанию для Android
Я делаю одно приложение для Android, но я думал о тематике.
Если я не объявляю тему своего приложения для Android, какая тема будет использоваться?
Где я могу найти эту информацию?
Каковы критерии использования одного и другого?
Я думал, если я хочу настроить все мое приложение, мне нужно расширить одну тему и настроить все элементы, которые я хочу настроить.
И что, если он принимает по умолчанию один из них? Погода Я должен настроить его еще раз? Как узнать, что является стандартным?
Ответы
Ответ 1
Тема по умолчанию изменяется в зависимости от уровня API (чтобы соответствовать общему пользовательскому интерфейсу).
В API < 10, тема была набором стилей (как в ссылке ниже), известной как Theme
, выше этого API 10, тема по умолчанию была Theme_Holo
и теперь, начиная с API 21, тема по умолчанию стала Theme.Material
.
Большинство этих стилей доступны через библиотеки android.support
.
PS: AFAIK легкая тема всегда была стандартной.
Ответ 2
Лучше всего определить тему по умолчанию самостоятельно, вместо того чтобы полагаться на андроид, чтобы выбрать тему по умолчанию. Это связано с тем, что разные версии андроида могут иметь совершенно разные темы по умолчанию и могут испортить ваши макеты.
Вы можете объявить тему для своего приложения в 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
вашей темы на все, что хотите...
Вы также можете использовать @android:style/Theme.Holo
непосредственно в AndroidManifest.xml
, если вы вообще не хотите никакой настройки.
Используйте Theme.AppCompat.Holo
, если версия API ниже 11
Ответ 3
Тема по умолчанию для приложения реализована в Resources.java!
/**
* 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;
}
Он варьируется в зависимости от уровня API, поэтому вам лучше определить свой собственный AppTheme в AndroidManifest.xml, чтобы обеспечить Theme на всех устройствах уровня API.
Pls ссылается на предыдущий ответ.