Android. View элементы меняют дефолтный стиль в зависимости от типа Activity. Как установить единый стиль?

275
16 января 2017, 19:38

Заметил что при создании различных типов Activity при создании приложения, к ним прикручиваются разные стили для чекбоксов и спиннеров, при создании Активити типа диалог там и вовсе свой стиль у элементов. Где эти стили прописываются в коде и как их на всех типах активити одинаковыми сделать?

Answer 1

Стили указываются в манифесте при объявлении активити с помощью атрибута android:theme

В данном манифесте они указаны в теге application и в каждом теге activity.

В атрибутах указаны ссылки на ресурс styles

Если в теге activity не указан атрибут android:theme, то берётся родительское значение этого атрибута (т.е. значение android:theme тега application)

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.stackoverflow.ru">
    <application
        android:theme="@style/AppTheme">
        <activity
            android:name=".activity.ScrollingActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />    
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".activity.TagsActivity"
            android:label="@string/title_activity_tags"
            android:theme="@style/AppTheme.NoActionBar" />
        <activity
            android:name=".activity.GalleryActivity"
            android:label="@string/title_activity_gallery"
            android:theme="@style/AppTheme.NoActionBar"></activity>
    </application>    
</manifest>

Сами описания стилей хранятся в ресурсах (/res/values/styles.xml например)

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>
    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
</resources>

Основная тема приложения наследуется от темы Theme.AppCompat.Light.DarkActionBar с помощью атрибута parent

Внутри тега style переопределяются свойства темы

Подробнее о стилях и темах читайте в руководстве:

https://developer.android.com/guide/topics/ui/themes.html

Также тему Вы можете выбрать с помощью графического интерфейса в Android Studio.

Для этого Перейдите к редактированию активити и выберите вкладку Design.

В панели сверху будет кнопка для выбора темы(обведена красным маркеорм на изображении)

При клике на неё появится окно выбора.

READ ALSO
VK Api отобразить фото из профиля

VK Api отобразить фото из профиля

ПриветМне нужно отобразить фото своего профиля vk в любой прокручивающейся вьюшке (Recycler/List)

319
Регулярное выражение

Регулярное выражение

Нужно написать регулярное выражение, которое могло бы достать любую ссылку из данного тэга:

287