2014-12-03 2 views
12

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

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

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

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

+0

Посмотрите на это http://stackoverflow.com/questions/9832114/how-to-use-device-default-theme-for-app – Antrromet

ответ

14

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

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

Наиболее этих стилей доступны через библиотеки android.support.

PS: AFAIK легкая тема всегда была стандартной.

+0

Что делать, если я хочу использовать Theme_Holo для всех, включая <10? – user1851366

+1

Затем вам нужно посмотреть что-то, называемое «HoloEverywhere», которое сейчас бесполезно, когда 'AppCompat' не работает ... – shkschneider

+1

@ user1851366 Чтобы использовать Holo или даже The Material Themes в версиях до 7, вы должны использовать библиотеку поддержки Android v7. Вы можете использовать AppCompat (предоставляет панель действий Material Design и т. Д.), А также элементы макета, такие как CardView или RecyclerView. Он хорошо освещен на официальном сайте Android. – fragon

3

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

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

0

тема по умолчанию для App это реализовать в 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.

Pls обратитесь к предыдущему ответу.

Смежные вопросы