形式工作室自定义按钮颜色在形状变化时不会更改

问题描述 投票:0回答:3

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" />
    
android android-layout
3个回答
5
投票
我发现使用自定义按钮时,请确保更改

<Button.../>

to

<androidx.appcompat.widget.AppCompatButton
由于材料io按钮无法接受自定义按钮作为背景。
    


0
投票

<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
  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>
    
  2. 压误:drawable_3
     <shape xmlns:android="http://schemas.android.com/apk/res/android"
     android:shape="rectangle">
    
             <corners android:radius="8dp" />
    
             <solid android:color="@color/DarkBlue" />
         </shape>
    
  3. 最终将所有可抽签的物品与选择器结合在一起
     <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>
    
  4. 也许你可以尝试这个
  5. 改变主题

0
投票
<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>

	
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.