Я разрабатываю пользовательский интерфейс мастера, в котором пользователь может двигаться дальше, только если форма соответствует некоторым критериям.
До сих пор я успешно разработал всю логику за кнопками и расположение самих кнопок, поэтому я могу включить кнопку «вперед» только тогда, когда пользователь вставил некоторую информацию.
<Button
android:id="@+id/btnForward"
style="@style/buttonForward_disabled"
android:enabled="false" />
Как вы можете видеть, я использовал атрибуты стиля, чтобы описать, когда кнопка (которая технически является кнопкой с фоном для рисования и текстом)
Мой styles.xml
файл содержит
<style name="buttonFB">
<item name="android:textAppearance">?android:attr/textAppearanceLarge</item>
<item name="android:textColor">#ffffff</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_weight">0.4</item>
<item name="android:layout_marginBottom">25dp</item>
<item name="android:layout_alignParentBottom">true</item>
<item name="android:enabled">true</item>
</style>
<style name="buttonFB_disabled" parent="buttonFB">
<item name="android:textColor">#ffffff</item>
<item name="android:enabled">false</item>
</style>
<style name="buttonForward_disabled" parent="buttonFB_disabled">
<item name="android:background">@drawable/btnfw_disabled</item>
<item name="android:layout_alignParentRight">true</item>
<item name="android:layout_marginRight">14dp</item>
<item name="android:text">@string/Forward</item>
</style>
<style name="buttonBackward_disabled" parent="buttonFB_disabled">
<item name="android:background">@drawable/btnfw_disabled</item>
<item name="android:layout_alignParentLeft">true</item>
<item name="android:layout_marginLeft">14dp</item>
<item name="android:text">@string/Backward</item>
</style>
и кнопки отображаются правильно, когда они создаются в макете. Очевидная проблема заключается в том, что Button.setEnabled(true)
только делает кнопку нажатой, но не меняет макет вообще. В приведенном выше примере вы видите, что в обоих случаях текст белый: ожидается, что он изменится в ближайшем будущем, как только я просмотрю всю графику.
Я прочитал, что не могу программно изменить стиль кнопок во время выполнения. Что можно сделать, чтобы кнопки выглядели по-разному в зависимости от их состояния?