Изменить цвет кнопки, не меняя цвет - PullRequest
0 голосов
/ 04 мая 2018

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

Я использую элемент Кнопка для моего макета XML. Класс кнопок из android.widget , расширяющий TextView .

В этом представлении есть возможность пометить как включить или отключить с помощью кода Java. .setEnabled(true|false).

Кнопка XML-кода

<Button
    android:id="@+id/maps_list_save_button"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="@string/str_save"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent" />

Что я хочу:

enter image description here Когда моя кнопка включена, я хочу дать ему фиолетовый цвет.

enter image description here Когда моя кнопка отключена, вы получите серый цвет.

Что я не хочу делать:

Создайте новый элемент и включите макет, я избегаю этого, потому что я хочу сохранить выбранную анимацию, повышение, отступ, высоту и т. Д. Создавать все заново не разумно.

Что я уже пробую:

Изменить фон = он потерял внутреннюю прокладку, что делает кнопку больше, и я хочу придерживаться "правил" дизайна материала enter image description hereenter image description here

Изменить тему = Я пытался изменить тему по редактору и по коду, но происходят две вещи: или я изменяю больше материалов, которые не являются кнопкой, или я меняю Включить и Отключить для того же цвета .

Даже в поисках документов я не нашел, как правильно использовать этот элемент.

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Что вам нужно, это изменить значение android:colorAccent специально для Button. Этого можно добиться, применив тему к Button.

Внутри styles.xml внести следующие изменения:

<style name="PurpleTheme" parent="AppTheme">
    <item name="android:colorAccent">#8654e2</item>
</style>

Затем объявите следующие две кнопки в файле XML, где первая кнопка имеет состояние «Включено», а вторая кнопка имеет состояние «Отключено».

<Button
    style="@style/Widget.AppCompat.Button.Colored"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button 1"
    android:theme="@style/PurpleTheme" />

<Button
    style="@style/Widget.AppCompat.Button.Colored"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:enabled="false"
    android:text="Button 2"
    android:theme="@style/PurpleTheme" />

Обратите внимание, что кнопки применяются:

  • style="@style/Widget.AppCompat.Button.Colored"
  • android:theme="@style/PurpleThemeOverlay"

Тогда вы получите следующий вывод:

enter image description here

0 голосов
/ 04 мая 2018

Вы можете использовать селектор, как показано ниже для достижения этого

 <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

  <item android:state_enabled="true">
    <shape
        android:shape="rectangle">
      <solid android:color="Your Color"></solid>
      <corners android:radius="5dp"></corners>
      <padding android:bottom="2dp" android:left="2dp"
          android:right="2dp" android:top="2dp"></padding>
    </shape>
  </item>
  <item android:state_enabled="false" android:drawable="@color/colorAccent"/>

</selector>
...