тема по умолчанию для android

<p>я делаю одно приложение для android, но я думал о темах ..</p><p>если я не объявил тему моего приложения для android, какая тема будет использоваться? где я могу найти эту информацию? каковы критерии использования одного и другого?</p><p>я думал о том, что если я хочу настроить все приложения, мне нужно расширить одну тему и настроить все элементы, которые я хочу настроить.</p><p>а что, если он принимает один из них по умолчанию? погода я должен настроить это снова? как я знаю, что по умолчанию?</p>

<p>тема по умолчанию варьируется в зависимости от уровня api (чтобы соответствовать общему интерфейсу).</p><p>в api <10 тема была набором стилей (как в приведенной ниже ссылке), известной как <code>theme</code>, над этим api 10 темой по умолчанию было <code>theme\_holo</code>, и теперь, начиная с api 21, темой по умолчанию стала <code>theme.material</code>.</p><ul> <li>api <10: см. код <a href="https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/values/themes.xml">frameworks</a> <code>theme</code> или <code>theme.appcompat</code></li> <li>10> = api <21: прочитайте <a href="https://developer.android.com/guide/topics/ui/themes.html">стили и темы</a> guide <code>holo\_theme</code> или <code>theme.appcompat</code></li> <li>api> = 21 <a href="https://developer.android.com/training/material/theme.html">использование темы материала</a> guide <code>theme.material</code></li> </ul><p>большинство из этих стилей доступны через библиотеки <code>android.support</code>.</p><p><strong>ps:</strong> afaik светлая тема всегда была по умолчанию.</p>

<p>лучше всего определить тему по умолчанию, а не полагаться на android, чтобы выбрать тему по умолчанию. это потому, что разные версии android<em> могут </em>иметь совершенно разные темы по умолчанию и могут испортить ваши макеты.</p><p>вы можете объявить тему для своего приложения в <code>androidmanifest.xml</code></p><pre><code><application android:theme="@style/mytheme" .....> </code></pre><p>затем в папке <code>res/values</code> вы редактируете/добавляете файл <code>themes.xml</code> и добавляете что-то вроде следующего:</p><pre><code><?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> </code></pre><p>вы можете отредактировать <code>parent</code> вашей темы на что угодно ...</p><p>вы также можете использовать <code>@android:style/theme.holo</code> непосредственно в <code>androidmanifest.xml</code>, если вы вообще не хотите<em> any </em>настройки.</p><p>используйте <code>theme.appcompat.holo</code>, если версия api ниже 11</p>

<p>тема по умолчанию для приложения реализована в <a href="https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/content/res/resources.java">resources.java</a> !</p><pre><code> /** * 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; } </code></pre><p>он варьируется в зависимости от уровня api, поэтому вам лучше определить свою собственную apptheme в androidmanifest.xml, чтобы обеспечить тему на всех устройствах уровня api.</p><p>просьба ссылаться на предыдущий ответ.</p>