0

我有一个可绘制的形状,它引用颜色的主题属性。

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>

任何人都可以帮助如何做到这一点?我似乎只能找到旧的(棒棒糖之前的)帖子,而且最近没有人遇到同样的问题。

4

0 回答 0