Я пытаюсь стилизовать пользовательскую кнопку - но большинство стилей, которые я объявил в styles.xml
, не применяются.
<!-- styles.xml -->
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
<item name="selectableFlatButton">@style/SelectableFlatButton</item>
</style>
<style name="SelectableFlatButton" parent="FlatButton">
<item name="backgroundTint">@color/bg_selectable_button_color</item>
<item name="android:textColor">@color/selectable_button_text_color</item>
<item name="iconTint">@color/selectable_button_text_color</item>
</style>
<style name="FlatButton" parent="Widget.MaterialComponents.Button.UnelevatedButton">
<item name="android:elevation">0dp</item>
<item name="cornerRadius">0dp</item>
<item name="backgroundTint">@color/gray98</item>
<item name="rippleColor">@color/colorPrimaryLight</item>
<item name="android:textColor">@color/colorPrimary</item>
<item name="android:selectable">true</item>
<item name="android:insetTop">0dp</item>
<item name="android:insetBottom">0dp</item>
<item name="android:textAllCaps">false</item>
<item name="iconGravity">textStart</item>
<item name="iconTint">@color/colorPrimary</item>
</style>
<!-- attrs.xml -->
<resources>
<attr name="selectableFlatButton" format="reference" />
</resources>
Реализация Button.Все, что он делает, это устанавливает стиль по умолчанию.
import android.content.Context
import android.util.AttributeSet
import android.widget.Button
import com.guyca.R
class SelectableFlatButton(context: Context, attrs: AttributeSet? = null) : Button(context, attrs, R.attr.selectableFlatButton)
Использование в файле макета:
<com.guyca.SelectableFlatButton
android:id="@+id/selectButton"
android:layout_width="0dp"
android:layout_height="56dp"
android:text="@string/select"
app2:icon="@drawable/ic_delete_sweep_24dp" />
Если вместо этого, используя мой SelectableFlatButton
, я использую androids 'Button
и передаюстиль как style="@style/SelectableFlatButton"
- выглядит так, как ожидалось.
Кажется, что единственные свойства стиля, которые работают, это android:textAllCaps
и android:textColor
- остальные не влияют на мою кнопку.