I添加了一个自定义按钮,更改了每个状态的一些值它输入到按压状态,我看到它确实输入了现在唯一的问题是固体或颜色不变。
custom按钮实现:
<?xml version="1.0" encoding="utf-8"?>
<item android:state_enabled="false">
<shape android:shape="rectangle">
<solid android:color="@color/LightGray"/>
<corners android:radius="200dp"/>
</shape>
</item>
<item android:state_pressed="true">
<color android:color="@color/Blue"/>
<shape android:shape="rectangle">
<corners android:radius="200dp"/>
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="@color/DarkBlue"/>
<corners android:radius="200dp"/>
</shape>
</item>
和按钮实现:
<Button
android:id="@+id/btnNext"
android:layout_width="102dp"
android:layout_height="wrap_content"
android:background="@drawable/custom_button"
android:layout_alignParentEnd="true"
android:layout_marginBottom="68dp"
android:text="Next >"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
/>
<Button.../>
to
<androidx.appcompat.widget.AppCompatButton
由于材料io按钮无法接受自定义按钮作为背景。
<item android:state_pressed="true">
<shape android:shape="rectangle">
<solid android:color="@color/Blue"/> <-- Move inside Shape
<corners android:radius="200dp"/>
</shape>
</item>
它应该按预期工作。如果上面不起作用,然后尝试为不同状态创建不同的绘制:
已启用false:drawable_1
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="8dp" />
<solid android:color="@color/LightGray" />
</shape>
true true:drawable_2
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="8dp" />
<solid android:color="@color/Blue" />
</shape>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="8dp" />
<solid android:color="@color/DarkBlue" />
</shape>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/drawable_1" android:state_enabled ="true"></item>
<item android:drawable="@drawable/drawable_2" android:state_pressed="true"></item>
<item android:drawable="@drawable/drawable_3" android:state_pressed="false"></item>
</selector>
也许你可以尝试这个
<style name="Theme.Dark"parent="Theme.MaterialComponents.DayNight.DarkActionBar">
</style>
->到这个
<style name="Theme.Dark"parent="Theme.AppCompat.DayNight.DarkActionBar">
</style>
材料按钮的行为不像旧按钮一样,因为它们不接受背景的颜色,而是从theme.xml文件中接受颜色。因此,要更改材料3按钮的背景颜色,只需在theme.xml中添加以下代码。
<item name="colorPrimary">@color/<your-color-here></item>