Как установить стиль для кнопки в Android?
Я определил файлы ниже в папке res.
styles_apptheme.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated with http://android-holo-colors.com -->
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="ButtonAppTheme" parent="android:Widget.Holo.Light.Button">
<item name="android:background">@drawable/apptheme_btn_default_holo_light</item>
</style>
</resources>
themes_apptheme.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated with http://android-holo-colors.com -->
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="AppTheme" parent="@style/_AppTheme"/>
<style name="_AppTheme" parent="Theme.AppCompat.Light">
<item name="android:editTextBackground">@drawable/apptheme_edit_text_holo_light</item>
<item name="android:buttonStyle">@style/ButtonAppTheme</item>
</style>
</resources>
В моем файле Layout.xml я определил свою кнопку ниже
<Button
android:id="@+id/btnAddTitle"
android:layout_below="@id/edEnterTitleValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btn_AddTitle"
android:layout_margin="20dp"
/>
Если я добавлю приведенную ниже строку к изображению кнопки выше,
android:background="@style/ButtonAppTheme"
Сбой приложения, указывающий, что для атрибута фона должен быть установлен ресурс с возможностью рисования.
Итак, я создал приведенный ниже файл - abc.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false" android:state_enabled="true"
android:drawable="@drawable/apptheme_btn_default_normal_holo_light" />
<item android:state_window_focused="false" android:state_enabled="false"
android:drawable="@drawable/apptheme_btn_default_disabled_holo_light" />
<item android:state_pressed="true"
android:drawable="@drawable/apptheme_btn_default_pressed_holo_light" />
<item android:state_focused="true" android:state_enabled="true"
android:drawable="@drawable/apptheme_btn_default_focused_holo_light" />
<item android:state_enabled="true"
android:drawable="@drawable/apptheme_btn_default_normal_holo_light" />
<item android:state_focused="true"
android:drawable="@drawable/apptheme_btn_default_disabled_focused_holo_light" />
<item
android:drawable="@drawable/apptheme_btn_default_disabled_holo_light" />
</selector>
Если я устанавливаю android:background="@drawable/abc"
, я не вижу стиль, установленный в кнопке.
Итак, дайте мне знать, как я могу установить стиль для кнопки.
Спасибо.
Ответы
Ответ 1
Было бы довольно просто, если вы сделаете это так.
Сначала создайте файл button_selector.xml в папке с возможностью переноса.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" >
<shape android:shape="rectangle" >
<corners android:radius="5dp" />
<stroke android:width="1dip" android:color="@color/green_temp" />
<gradient android:angle="-90" android:startColor="@color/green_temp" android:endColor="@color/green_temp" />
</shape>
</item>
<item android:state_focused="true">
<shape android:shape="rectangle" >
<corners android:radius="5dp" />
<stroke android:width="1dip" android:color="#971E05" />
<solid android:color="#58857e"/>
</shape>
</item>
<item >
<shape android:shape="rectangle" >
<corners android:radius="5dp" />
<stroke android:width="1dip" android:color="@color/bright_green" />
<gradient android:angle="-90" android:startColor="@color/green_temp" android:endColor="@color/button_green" />
</shape>
</item>
</selector>
Добавьте эти цвета в папку colors.xml значений.
<!-- Green -->
<color name="green_temp">#23A96E</color>
<color name="green_dark">#159204</color>
<color name="bright_green">#02D8B0</color>
<color name="button_green">#10a54a</color>
Наконец, в вашей желаемой кнопке layout.xml установите фон из селектора.
<Button
android:id="@+id/btnAddTitle"
android:layout_below="@id/edEnterTitleValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btn_AddTitle"
android:background="@drawable/button_selector"
android:layout_margin="20dp"
/>
Затем все ваши кнопки будут в стиле с желаемым цветом.
Ответ 2
Android Button Maker - это онлайн-инструмент для создания кода кнопок для Android-приложений. API Android предоставляет ресурсы, пригодные для рисования, где XML файл определяет геометрическую форму, включая цвета, границы и градиенты.
Эта кнопка генерируется на основе XML-кода с возможностью рисования, который быстрее загружается по сравнению с обычными кнопками png. Вы можете настроить свойства кнопок на панели настроек и получить исходный код.
Отметьте эту ссылку Button Maker
Не нужно взламывать мозги... этот инструмент делает его простым
Ответ 3
Попробуйте это как альтернативу. создайте папку drawable в res, затем создайте xml файлы и скопируйте их под кодом и попробуйте сначала, затем настройте их согласно вашему требованию.
button_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#00acc1"/>
<stroke android:width="2dp" android:color="#ffffff"/>
<corners android:radius="2dp"/> </shape>
button_bg_pressed.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#006064"/>
<stroke android:width="1dp" android:color="#ffffff"/>
<corners android:radius="2dp"/> </shape>
button_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_focused="true" android:state_pressed="true"
android:drawable="@drawable/button_bg_pressed" />
<item android:state_focused="false" android:state_pressed="true"
android:drawable="@drawable/button_bg_pressed" />
<item android:drawable="@drawable/button_bg" /> </selector>
И теперь в вашей кнопке xml установите фон как button_selector.xml
<Button
android:id="@+id/btnAddTitle"
android:layout_below="@id/edEnterTitleValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btn_AddTitle"
android:background="@drawable/button_selector"
android:layout_margin="20dp"/>
Это поможет вам. Таким образом вы можете настроить весь стиль кнопки.
Ответ 4
заменить
android:background="@style/ButtonAppTheme"
с
style="@style/ButtonAppTheme"
и все в порядке!
Ответ 5
Если вы хотите, чтобы анимация кнопки по умолчанию была выполнена по дизайну материала и изменилась цвет кнопки, попробуйте это.
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/padding_12"
android:text="button text here"
android:theme="@style/NavyBtn" />
в style.xml
<style name="NavyBtn" parent="Theme.AppCompat.Light">
<item name="colorButtonNormal">#020e39</item>
<item name="android:textColor">#FFFFFF</item>
</style>