У меня есть две кнопки, и я хочу выделить синюю рамку на нажатой одной. Когда кнопка нажата, она не становится синей, а граница другой кнопки возвращается к значению по умолчанию.
Я не могу вернуть правильную границу по умолчанию. Я пишу функцию, но работает неправильно.
Моя кнопка (вторая совпадает с другим идентификатором и текстом):
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_schemes_1"
style="@style/Buttons.Schemes"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/margin_4"
android:layout_weight="1"
android:text="@string/schemes_1"
app:icon="@drawable/ic_schemes_1" />
Стиль не имеет ничего интересного:
<style name="Buttons.Schemes" parent="Widget.MaterialComponents.Button.OutlinedButton">
<item name="android:typeface">sans</item>
<!--android:fontFamily="sans-serif-condensed-medium"-->
<item name="android:textColor">@android:color/black</item>
<item name="android:letterSpacing">0</item>
<item name="iconTint">@null</item>
<item name="backgroundTint">@android:color/white</item>
</style>
Моя последняя реализация собиралась найти и запомнить значение границы по умолчанию до того, как произойдет первый щелчок, поэтому сначала я пишу:
private var defaultColor: Int = 0
Тогда
defaultColor = btn_schemes_1.strokeColor.defaultColor
И функция, вызываемая при нажатии одной из кнопок:
private fun setButtonsBorder(buttonNumber: Int) {
when (buttonNumber) {
1 -> {
btn_schemes_1.strokeColor = ColorStateList.valueOf(Color.BLUE)
btn_schemes_1.strokeWidth = 2
btn_schemes_2.strokeColor = ColorStateList.valueOf(defaultColor)
btn_schemes_2.strokeWidth = 1
}
2 -> {
btn_schemes_1.strokeColor = ColorStateList.valueOf(defaultColor)
btn_schemes_1.strokeWidth = 1
btn_schemes_2.strokeColor = ColorStateList.valueOf(Color.BLUE)
btn_schemes_2.strokeWidth = 2
}
}
}
Но это тоже не удалось, потому что по умолчанию цвет не "те" по умолчанию. Когда я установил его, я обнаружил, что это просто colorPrimary
.
Как найти этот цвет по умолчанию или метод записи, чтобы вернуть цвет границы по умолчанию?