it-swarm.com.ru

Тема по умолчанию для Android

Я делаю одно приложение для Android, но я думал о темах ..

Если я не объявил тему моего приложения для Android, какая тема будет использоваться? Где я могу найти эту информацию? Каковы критерии использования одного и другого?

Я думал о том, что если я хочу настроить все приложения, мне нужно расширить одну тему и настроить все элементы, которые я хочу настроить.

А что, если он принимает один из них по умолчанию? Погода я должен настроить это снова? Как я знаю, что по умолчанию?

15
user1851366

Тема по умолчанию варьируется в зависимости от уровня API (чтобы соответствовать общему интерфейсу).

В API <10 тема была набором стилей (как в приведенной ниже ссылке), известной как Theme, над этим API 10 темой по умолчанию было Theme_Holo, и теперь, начиная с API 21, темой по умолчанию стала Theme.Material.

Большинство из этих стилей доступны через библиотеки Android.support.

PS: AFAIK Светлая тема всегда была по умолчанию.

16
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 вашей темы на что угодно ...

Вы также можете использовать @Android:style/Theme.Holo непосредственно в AndroidManifest.xml, если вы вообще не хотите any настройки.

Используйте Theme.AppCompat.Holo, если версия API ниже 11

4
Populus

Тема по умолчанию для приложения реализована в 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, чтобы обеспечить тему на всех устройствах уровня API.

Просьба ссылаться на предыдущий ответ.

0
Thomas Liu