Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 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 ссылается на предыдущий ответ.