Подтвердить что ты не робот

Android - стиль кнопки по умолчанию

Вопрос: Где я могу найти стили по умолчанию xml с шестнадцатеричными кодами цветов?

Я ищу стиль "buttonStyle" и другие стили по умолчанию, влияющие на такие аспекты, как TextViews, Buttons и т.д. (если вы не изменяете стиль аспект)

Я посмотрел в <instalation_folder>\android-sdk\platforms\android-<versio>\data\res\values и <instalation_folder>\android-sdk\platforms\android-<version>\data\res\colors, но на самом деле я не нашел то, что искал.

Надеюсь, мой вопрос ясен.


Из-за низкой репутации я не могу ответить на этот вопрос. Вот ответ

Ответ

С небольшим количеством googling я обнаружил, что "buttonStyle" на самом деле "Widget.Button" - Стилирование Android со значениями по умолчанию

Вот как это работает:

  • Как я уже сказал, стиль "buttonStyle" - это стиль "Widget.Button", определенный в \android-sdk\platforms\android-<version>\data\res\values\styles.xml. Фон установлен в значение: @android:drawable/btn_default
  • \android-sdk\platforms\android-<version>\data\res\drawable\btn_default.xml определяет цвет фона кнопки в качестве селектора. Цвет фактически зависит от состояния кнопки. Цвет по умолчанию установлен на @drawable/btn_default_normal
  • С небольшим поиском я обнаружил, что btn_default_normal является png-изображением, расположенным в \android-sdk\platforms\android-<version>\data\res\drawable-mdpi

Я считаю это немного запутанным, но я надеюсь, что это поможет кому-то, может быть...

4b9b3361

Ответ 1

Понимание того, как работают стили Android, может быть немного беспорядочным.

Я попытаюсь объяснить, каким будет основной поток работы на основе примера.

Предположим, вы хотите знать, что такое фон по умолчанию для кнопок. Это может быть либо простой цвет (маловероятный), либо выталкиваемый (существует много разных типов чертежей).

Android имеет темы. Тема в основном определяет, какой стиль применяется к виджетам. Поэтому наш первый шаг - найти тему Android по умолчанию.

Вы найдете его под android-sdk\platforms\android-15\data\res\values\themes.xml

В этом файле темы найдите button.

Вы найдете что-то вроде этого:

<!-- Button styles -->

<item name="buttonStyle">@android:style/Widget.Button</item>

Это означает, что тема применяет стиль Widget.Button к кнопкам.

Хорошо, теперь найдем стиль Widget.Button.

Все стиль Android по умолчанию определяется в файле android-sdk\platforms\android-15\data\res\values\styles.xml

Теперь найдите Widget.Button

Вы найдете что-то вроде этого:

<style name="Widget.Button">
    <item name="android:background">@android:drawable/btn_default</item>
    <item name="android:focusable">true</item>
    <item name="android:clickable">true</item>
    <item name="android:textAppearance">?android:attr/textAppearanceSmallInverse</item>
    <item name="android:textColor">@android:color/primary_text_light</item>
    <item name="android:gravity">center_vertical|center_horizontal</item>
</style>

Интересная строка:

<item name="android:background">@android:drawable/btn_default</item>

Это означает, что в качестве фона кнопки есть выделение, называемое btn_default.

Теперь нам нужно найти файл с именем btn_default.* в одной из доступных папок под android-sdk\platforms\android-15\data\res.

Это может быть либо изображение (очень маловероятно), либо файл xml, например btn_default.xml.

После небольшого поиска вы найдете файл android-sdk\platforms\android-15\data\res\drawable\btn_default.xml

Он содержит что-то вроде этого:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_window_focused="false" android:state_enabled="true" android:drawable="@drawable/btn_default_normal" />
    <item android:state_window_focused="false" android:state_enabled="false" android:drawable="@drawable/btn_default_normal_disable" />
    <item android:state_pressed="true" android:drawable="@drawable/btn_default_pressed" />
    <item android:state_focused="true" android:state_enabled="true" android:drawable="@drawable/btn_default_selected" />
    <item android:state_enabled="true" android:drawable="@drawable/btn_default_normal" />
    <item android:state_focused="true" android:drawable="@drawable/btn_default_normal_disable_focused" />
    <item android:drawable="@drawable/btn_default_normal_disable" />
</selector>

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

Не смотря на состояние по умолчанию.

<item android:state_enabled="true" android:drawable="@drawable/btn_default_normal" />

Он применяет drawable с именем btn_default_normal.

Теперь нам нужно найти этот drawable.

Опять же, нам нужно найти файл с именем btn_default_normal.* в одной из выпадающих папок под android-sdk\platforms\android-15\data\res.

Это может быть либо изображение, либо xml файл, например btn_default_normal.xml.

Вы найдете несколько файлов под названием "btn_default_normal.9.png" в разных папках с возможностью рисования для разных разрешений.

:) Теперь вы знаете, что btn_default_normal.9.png установлен как фон кнопки.

Ответ 2

Вы можете найти стили по умолчанию для виджетов Android при объявлении в XML:

style="@android:style/Widget.Button" - standard Button
style="@android:style/Widget.TextView" - standard TextView

Например, это стиль кнопки по умолчанию:

    <style name="Widget.Button">
        <item name="android:background">@android:drawable/btn_default</item>
        <item name="android:focusable">true</item>
        <item name="android:clickable">true</item>
        <item name="android:textAppearance">?android:attr/textAppearanceSmallInverse</item>
        <item name="android:textColor">@android:color/primary_text_light</item>
        <item name="android:gravity">center_vertical|center_horizontal</item>
    </style>

фон кнопки по умолчанию:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/btn_default_normal" android:state_enabled="true" android:state_window_focused="false"/>
    <item android:drawable="@drawable/btn_default_normal_disable" android:state_enabled="false" android:state_window_focused="false"/>
    <item android:drawable="@drawable/btn_default_pressed" android:state_pressed="true"/>
    <item android:drawable="@drawable/btn_default_selected" android:state_enabled="true" android:state_focused="true"/>
    <item android:drawable="@drawable/btn_default_normal" android:state_enabled="true"/>
    <item android:drawable="@drawable/btn_default_normal_disable_focused" android:state_focused="true"/>
    <item android:drawable="@drawable/btn_default_normal_disable"/>
</selector> 

Вы можете получить цвет по умолчанию с помощью любого графического редактора: путь к стандартной кнопке NinePatch ..\Android-SDK\платформы\андроида-13\Data\рес\вытяжка-ИПЧР