我有一个可绘制的形状,它引用颜色的主题属性。
button_oval_drawable.xml
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<stroke
android:color="?attr/colorPrimary"
android:width="30dp"/>
<corners
android:radius="5dp"/>
<solid
android:color="?attr/colorOnPrimary"/>
</shape>
这在显示正确主题颜色的 android studio图片的可绘制预览上显示了 正确的主题颜色
但是,一旦我通过样式在按钮视图中使用可绘制对象,正确的颜色就会消失。控制台中似乎没有任何错误消息。
button_layout.xml
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/constraintLayout"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:theme="@style/Theme.MyProgramme">
<Button
android:id="@+id/NumberButton1"
style="@style/Widget.Theme.MyProgramme.NumberButton"
app:layout_constraintDimensionRatio="1:1.7"
android:text="1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/NumberButton2"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
/>
...more buttons...
</androidx.constraintlayout.widget.ConstraintLayout>
样式.xml
<style name="Widget.Theme.MyProgramme.NumberButton" parent="">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">0dp</item>
<item name="android:layout_marginBottom">16dp</item>
<item name="android:layout_marginStart">5dp</item>
<item name="android:padding">2dp</item>
<item name="android:textSize">25dp</item>
<item name="android:background">@drawable/button_oval_drawable</item>
<item name="android:textColor">?colorOnPrimary</item>
</style>
任何人都可以帮助如何做到这一点?我似乎只能找到旧的(棒棒糖之前的)帖子,而且最近没有人遇到同样的问题。