Android Studio自定义按钮颜色不变,而形状发生变化

igsr9ssn  于 2022-12-31  发布在  Android
关注(0)|答案(3)|浏览(205)

我添加了一个自定义按钮,为每个状态更改了一些值,但当我按下按钮时,按钮仍然没有更改,只是获得默认样式,我将窗体矩形中的形状更改为椭圆形,这样我就可以看到选择器是否进入按下状态,我看到它现在确实进入了唯一的问题是固体或颜色没有更改。
自定义按钮实现:

<?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"
   />
xienkqul

xienkqul1#

我发现在使用自定义按钮时,请确保更改

<Button.../>
    • 至**
<androidx.appcompat.widget.AppCompatButton

这是由于材料io按钮不能接受自定义按钮作为背景。

jk9hmnmh

jk9hmnmh2#

按下状态下的颜色位置有问题。纯色属性应位于标记内。请尝试使用以下内容

<item android:state_pressed="true">
    <shape android:shape="rectangle">
        <solid android:color="@color/Blue"/>   <-- Move inside Shape
        <corners android:radius="200dp"/>
    </shape>
</item>

而且它应该像预期的那样工作。
如果以上不起作用,则尝试为不同状态创建不同的可绘制对象:
1.启用错误:可绘制_1

<shape xmlns:android="http://schemas.android.com/apk/res/android"
 android:shape="rectangle">

         <corners android:radius="8dp" />

         <solid android:color="@color/LightGray" />
 </shape>

1.按下真:可绘制_2

<shape xmlns:android="http://schemas.android.com/apk/res/android"
 android:shape="rectangle">

         <corners android:radius="8dp" />

         <solid android:color="@color/Blue" />
 </shape>

1.按下错误:可绘制_3

<shape xmlns:android="http://schemas.android.com/apk/res/android"
 android:shape="rectangle">

         <corners android:radius="8dp" />

         <solid android:color="@color/DarkBlue" />
     </shape>

1.最后用选择器合并所有可绘制对象

<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>
bkkx9g8r

bkkx9g8r3#

也许你可以试试这个
变换主题

  • 〉从这里
<style name="Theme.Dark"parent="Theme.MaterialComponents.DayNight.DarkActionBar">   
</style>
  • 〉到此为止
<style name="Theme.Dark"parent="Theme.AppCompat.DayNight.DarkActionBar">   
</style>

相关问题