Поиск…


Использовать пользовательскую тему по всему миру

В themes.xml:

<style name="AppTheme" parent="Theme.AppCompat">
    <!-- Theme attributes here -->
</style>

В AndroidManifest.xml:

<application
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">
    
    <!-- Activity declarations here -->

</application>

Определение первичных, первичных темных и акцентных цветов

Вы можете настроить цветовую палитру вашей темы .

Использование каркасного API ,

5.0
<style name="AppTheme" parent="Theme.Material">
    <item name="android:colorPrimary">@color/primary</item>
    <item name="android:colorPrimaryDark">@color/primary_dark</item>
    <item name="android:colorAccent">@color/accent</item>
</style>

Использование библиотеки поддержки AppcompatAppCompatActivity )

2.1.x
<style name="AppTheme" parent="Theme.AppCompat">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/accent</item>
</style>

Использовать пользовательскую тему для каждой операции

В themes.xml:

<style name="MyActivityTheme" parent="Theme.AppCompat">
    <!-- Theme attributes here -->
</style>

В AndroidManifest.xml:

<application
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/Theme.AppCompat">
    
    <activity
        android:name=".MyActivity"
        android:theme="@style/MyActivityTheme" />

</application>

Цвет Overscroll (API 21+)

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="android:colorEdgeEffect">@color/my_color</item>
</style>

Цвет пульсации (API 21+)

5.0

Анимация пульсации отображается, когда пользователь нажимает интерактивные представления.

Вы можете использовать тот же цвет пульсации, который используется вашим приложением, назначая ?android:colorControlHighlight в ваших представлениях. Вы можете настроить этот цвет, изменив атрибут android:colorControlHighlight в своей теме:

Этот цвет эффекта можно изменить:

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="android:colorControlHighlight">@color/my_color</item>
</style>

Или, если вы используете тему материала:

<style name="AppTheme" parent="android:Theme.Material.Light">
    <item name="android:colorControlHighlight">@color/your_custom_color</item>
</style>

Световая строка состояния (API 23+)

Этот атрибут может изменить фон значков строки состояния (вверху экрана) на белый.

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="android:windowLightStatusBar">true</item>
</style>

Прозрачная навигация и бары состояния (API 19+)

Панель навигации (внизу экрана) может быть прозрачной. Вот как это сделать.

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="android:windowTranslucentNavigation">true</item>
</style>

Строка состояния (верхняя часть экрана) может быть прозрачной, применяя этот атрибут к стилю:

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="android:windowTranslucentStatus">true</item>
</style>

Цвет панели навигации (API 21+)

5.0

Этот атрибут используется для изменения панели навигации (одна, содержащая кнопку Back, Home Recent). Обычно он черный, однако цвет может быть изменен.

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="android:navigationBarColor">@color/my_color</item>
</style>

Наследование темы

При определении тем обычно используется тема, предоставляемая системой, а затем изменения изменяют внешний вид в соответствии с его собственным приложением. Например, так Theme.AppCompat тема Theme.AppCompat :

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

Эта тема теперь имеет все свойства стандартной темы Theme.AppCompat , кроме тех, которые мы явно изменили.

Существует также ярлык при наследовании, обычно используемый, когда он наследуется от его собственной темы:

<style name="AppTheme.Red">
    <item name="colorAccent">@color/red</item>
</style>

Поскольку у него уже есть AppTheme. в начале его имени он автоматически наследует его, не требуя определения parent темы. Это полезно, когда вам нужно создать определенные стили для части (например, одного действия) вашего приложения.

Несколько тем в одном приложении

Используя более чем одну тему в приложении для Android, вы можете добавлять пользовательские цвета для каждой темы, чтобы:

OneTheme TwoTheme

Во-первых, мы должны добавить наши темы в style.xml следующим образом:

<style name="OneTheme" parent="Theme.AppCompat.Light.DarkActionBar">

</style>

<!--  -->
<style name="TwoTheme" parent="Theme.AppCompat.Light.DarkActionBar" >

</style>
......

Выше вы можете увидеть OneTheme и TwoTheme .

Теперь перейдите в свой AndroidManifest.xml и добавьте эту строку: android:theme="@style/OneTheme" в свой тег приложения , это сделает тему OneTheme по умолчанию:

<application
        android:theme="@style/OneTheme"
        ...>

Создайте новый xml-файл с именем attrs.xml и добавьте этот код:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <attr name="custom_red" format="color" />
    <attr name="custom_blue" format="color" />
    <attr name="custom_green" format="color" />
</resources>
<!-- add all colors you need (just color's name) -->

Вернитесь к style.xml и добавьте эти цвета со своими значениями для каждой темы:

<style name="OneTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="custom_red">#8b030c</item>
    <item name="custom_blue">#0f1b8b</item>
    <item name="custom_green">#1c7806</item>
</style>

<style name="TwoTheme" parent="Theme.AppCompat.Light.DarkActionBar" >
    <item name="custom_red">#ff606b</item>
    <item name="custom_blue">#99cfff</item>
    <item name="custom_green">#62e642</item>
</style>

Теперь у вас есть пользовательские цвета для каждой темы, давайте добавим этот цвет в наши представления.

Добавьте цвет custom_blue в TextView, используя «? Attr /»:

Перейдите к своему imageView и добавьте этот цвет:

<TextView>
    android:id="@+id/txte_view"
    android:textColor="?attr/custom_blue" />

Моу мы можем изменить тему только одной строкой setTheme(R.style.TwoTheme); эта строка должна быть до setContentView() методе onCreate() , как этот Activity.java :

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setTheme(R.style.TwoTheme);
    setContentView(R.layout.main_activity);
    ....
}


изменить тему для всех действий сразу

Если мы хотим изменить тему для всех действий, нам нужно создать новый класс с именем MyActivity, который расширяет класс AppCompatActivity (или класс Activity ) и добавляет строку setTheme(R.style.TwoTheme); to onCreate () :

public class MyActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (new MySettings(this).isDarkTheme())
            setTheme(R.style.TwoTheme);
    }
}

Наконец, перейдите ко всем вашим действиям, добавьте, чтобы все они расширили базовый класс MyActivity :

public class MainActivity extends MyActivity {
    ....
}

Чтобы изменить тему, просто перейдите в MyActivity и измените R.style.TwoTheme на свою тему ( R.style.OneTheme , R.style.ThreeTheme ....).



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow