Android: настроить все виджеты пользовательского интерфейса, используя одну тему - PullRequest
2 голосов
/ 20 октября 2011

Как я могу настроить все виджеты в приложении, создав один стиль и применив его к приложению через android: theme в AndroidManifest?

Ответы [ 2 ]

2 голосов
/ 20 октября 2011

Вот пример, который может помочь (он может не работать дословно, так как я настроил его, чтобы упростить его и продемонстрировать некоторые другие вещи, которые вы можете сделать).

В res \ values ​​\ styles.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
  <style name="TextColorForTheme">
    <item name="android:textColor">@color/red</item>
  </style>
</resources>

В 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="@style/android:Theme">
    <item name="android:listSeparatorTextViewStyle">@style/TextColorForTheme</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowFrame">@null</item>
  </style>
</resources>

Затем в вашем AndroidManifest.xml установите целое приложение или отдельные действия для использования этой темы:

  <application
    android:theme="@style/myTheme"
<snip>    
    <activity
      android:theme="@style/myTheme"
<snip>

Кроме того, вы можете установить тему в коде для вашей активности Java:

  @Override
  public void onCreate(Bundle bundle)
  {
    super.onCreate(bundle);
    setTheme(R.style.myTheme);
<snip>
1 голос
/ 20 октября 2011

Вы не сможете сделать это, создав только один стиль. Тема по сути является мета-стилем, который определяет стили по умолчанию для каждого из различных доступных виджетов. Вы начнете с создания темы (которая сама является стилем) с родителем одной из существующих системных тем и установки атрибутов стиля по умолчанию для каждого виджета, который вы хотите изменить из базовой темы. Например, если у вас был другой стиль кнопки, который вы хотите установить по умолчанию в своей теме, вы можете добавить следующее в определение вашей темы:

<item name="android:buttonStyle">@style/MyButtonStyle</item>

Подробнее см. http://developer.android.com/guide/topics/ui/themes.html.

...