当前位置: 首页 > 知识库问答 >
问题:

如何设置自定义按钮状态背景颜色?

范瀚昂
2023-03-14

我有一个按钮,它包含一个抽屉和文本。我希望按钮的背景不同于正常提供的(最好是一个普通的颜色)。这工作得很好,我只需在XML文件中使用android:background属性并相应地分配颜色。然而,我希望背景改变为不同的颜色时,选择或聚焦(状态选择器)。

我尝试用定义的颜色在一个可绘制的文件夹中创建一个选择器(当处理按钮的文本时很好地工作),如下所示:

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_focused="true" android:state_pressed="false" android:color="@color/green" />
        <item android:state_focused="true" android:state_pressed="true" android:color="@color/green" />
        <item android:state_focused="false" android:state_pressed="true" android:color="@color/green" />
        <item android:color="@color/white" />
    </selector> 

并将此xml设置为android:background属性,如下所示:

android:background="@drawable/button_state"

但这会引起一个力闭合,说明:

 Caused by: android.content.res.Resources$NotFoundException: File res/drawable/button_state.xml from drawable resource ID #0x7f020070

但资源就在那里。可以不自定义后台状态吗?如果可以,怎么做?或者我做错了什么?谢谢你的帮助!

共有1个答案

罗凯
2023-03-14

您发布的xml适用于颜色状态列表,而不是可绘制的状态列表。请尝试以下操作:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" android:state_pressed="false" >
        <shape><solid android:color="@color/green"/></shape>
    </item>
    . . .
</selector>

或者,将现有文件放入res/color中,并像使用任何其他颜色一样使用它。但是,我不记得您是否可以直接使用颜色状态列表作为视图的背景。

 类似资料:
  • 问题内容: 我有一个我想将背景颜色更改为白色的。使用“金属外观”时,我可以通过以下方式实现所需的效果setBackground: 具有白色背景的金属外观风格的JButton 不幸的是,使用Windows LAF时,“背景色”的概念有所不同。背景颜色是按钮周围绘制的颜色: Windows外观风格的JButton,带有白色背景 我想使用Windows LAF,但允许将此按钮的颜色JButton更改为白

  • 在新的woo orders屏幕上,旧的彩色状态图标现在消失了,取而代之的是一个带有彩色背景的大状态按钮。 处理为绿色,完成为蓝色,取消为灰色等。 我在woocommerce orders中有一个自定义订单状态,名为:in progress。自定义订单状态似乎也只给出一个默认的灰色背景。我想为我的自定义订单状态分配一个颜色背景。我曾试图找到一个代码片段,以便这样做,但一直没有运气。

  • 目前我正在尝试创建自定义按钮与自定义背景,重点是我想创建圆角边缘的按钮编程。这是我创建的代码: getscreenwidth和getscreenheight背后 结果是文本不见了 这方面有什么办法吗?

  • 我正在努力修改MUI next(v1)中的按钮颜色。 我该如何设置muitheme,使其行为与bootstrap相似,这样我就可以用“btn危险”表示红色,“btn成功”表示绿色? 我尝试了自定义,但它不能正常工作(悬停颜色不会改变),而且似乎是重复的。我有什么选择?

  • 我对改变晶圆厂的背景色有一个问题,似乎晶圆厂后面有另一个背景 这是我的代码 现在唯一有效的解决方案是改变我的应用程序上的颜色口音,但它会影响其他UI元素

  • 问题内容: 因此,我看到我们可以使用具有灰色和白色(当setinverse …时)背景色的Alertdialog。 要了解为什么我检查了sdk的themes.xml,检查了它是否导致了可绘制对象,并且在那里我意识到alertdialog背景不是以编程方式完成的,而是通过一些图像完成的。这些图像保证了当我们使用LayoutInflater设置不同的背景色时,对话框的顶部(标题区域)和底部(按钮区域上