setTextAppearance - не работает для MaterialButton при попытке отключить клик - PullRequest
1 голос
/ 28 октября 2019

Android 6.0

Android Studio 3.6

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

  bluetoothPageViewModel.isDisableModeLiveData().observe(this, Observer {
      dataBinding.buttonStartSearchBluetooth.setTextAppearance(
          R.style.buttonDisableStyle
      );
  })

здесь макет xml:

 <com.google.android.material.button.MaterialButton
     android:id="@+id/buttonStartSearchBluetooth"
     style="@style/buttonStyle"
     android:layout_width="0dp"
     android:layout_height="@dimen/button_height"
     android:layout_margin="@dimen/button_margin"
     android:onClick="onClickButtonStartSearch"
     android:text="@string/start_search"
     app:layout_constraintBottom_toBottomOf="parent"
     app:layout_constraintEnd_toEndOf="parent"
     app:layout_constraintStart_toStartOf="parent" />

и здесь styles.xml

<style name="buttonDisableStyle" parent="@style/Widget.MaterialComponents.Button">
    <item name="android:textColor">@color/default_button_textColor</item>
    <item name="backgroundTint">@color/button_bg_color</item>
    <item name="android:enabled">false</item>
    <item name="android:clickable">false</item>
    <item name="android:textAppearance">@style/byttonTexAppearanceStyle</item>
</style>

<style name="byttonTexAppearanceStyle" parent="@style/TextAppearance.MaterialComponents.Button">
    <item name="android:textSize">18sp</item>
    <item name="android:textAllCaps">true</item>
</style>

Но после вызова setTextAppearance я все еще могу нажать кнопку. Почему?

1 Ответ

1 голос
/ 28 октября 2019

setTextAppearance позаботьтесь только о стилизации текста представления. Проверьте официальный документ , чтобы увидеть поддерживаемое свойство, на которое влияет setTextAppearance.

Вы должны обработать другое свойство вручную, проверьте ниже:

bluetoothPageViewModel.isDisableModeLiveData().observe(this, Observer {
    dataBinding.buttonStartSearchBluetooth.setTextAppearance(
        R.style.byttonTexAppearanceStyle
    );

    dataBinding.buttonStartSearchBluetooth.setEnabled(false);
    dataBinding.buttonStartSearchBluetooth.setClickable(false);
    dataBinding.buttonStartSearchBluetooth.setBackgroundTintList(
        ContextCompat.getColorStateList(this, R.color.button_bg_color))
    );
})

<style name="byttonTexAppearanceStyle" parent="@style/TextAppearance.MaterialComponents.Button">
    <item name="android:textSize">18sp</item>
    <item name="android:textAllCaps">true</item>
    <item name="android:textColor">@color/default_button_textColor</item>
</style>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...