【问题标题】:Android button color change on pressed按下时Android按钮颜色变化
【发布时间】:2017-05-17 08:47:48
【问题描述】:

当你创建一个 android 按钮时,原来的颜色是灰色的。当你按下它时,颜色会改变,当你松开它时,它会变回原来的灰色。

这就是我想用我的颜色做的,但使用默认灰色以外的其他颜色。问题是,当我更改按钮的颜色然后单击它时,什么也没有发生,就好像我单击的是空布局一样。

这是我为解决问题而编写的 XML 文件 - button_connexion_style.xml

?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:drawable="#ff0000ff" android:state_focused="true" /> <!-- focused -->
  <item android:color="#449D44"/> <!-- default -->
  <item android:drawable="#278727" android:state_pressed="true"/>
</selector>

在我的按钮 XML 代码中,我这样做是为了调用以前的 XML:

android:background="@drawable/button_connexion_style"

但它不起作用。

如果有人可以帮忙,请告诉我。

【问题讨论】:

  • 我对这些不太熟悉,但是为什么focusedpressed 类型为drawable 而只有默认值是color?您在所有三个状态中添加颜色值,但您将其中两个设置为可绘制?
  • 点击按钮时需要改成这个#278727,焦点时需要#ff0000ff,默认需要这个##449D44对吗?
  • Grisgram 在这里发布这个问题之前,我问了另一个家伙,这就是他告诉我的。 Sunisha Sindhu 是的,就是这样。
  • 请检查我的回答,如果有效请点赞
  • 改变它并在drawable属性中添加任何drawable或设置颜色而不是drawable。 .

标签: android android-xml android-button android-color


【解决方案1】:

flat_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/rect_pressed"/>
<item android:drawable="@drawable/rect_normal"/>
</selector>

rect_normal.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/rect_pressed" />

<item android:bottom="@dimen/layer_padding">
    <shape android:shape="rectangle">
        <corners android:radius="@dimen/corner_radius" />
        <solid android:color="@color/colorPrimary" />
    </shape>
</item>

</layer-list>

rect_pressed.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="@dimen/corner_radius" />
<solid android:color="@color/colorPrimaryDark" />
</shape>

在按钮中添加以下行

android:background="@drawable/flat_selector"

【讨论】:

    【解决方案2】:
    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item
            android:state_enabled="false"
            android:drawable="@color/red" />
        <item
            android:state_pressed="true"
            android:state_enabled="true"
            android:drawable="@color/blue" />
        <item
            android:state_focused="true"
            android:state_enabled="true"
            android:drawable="@color/green" />
        <item
            android:state_enabled="true"
            android:drawable="@color/grey" />
    </selector>
    

    像上面一样在你的drawable中创建一个xml文件, 并相应地设置图像/颜色,然后将此 xml 设置为 imageButton 的背景。

    【讨论】:

      【解决方案3】:

      请根据您的颜色代码填写,

      button_connexion_style.xml

       <?xml version="1.0" encoding="utf-8"?>
      <selector xmlns:android="http://schemas.android.com/apk/res/android">
          <item android:drawable="@color/green" android:state_pressed="true" /> <!-- pressed -->
          <item android:drawable="@color/blue" android:state_focused="true" /> <!-- focused -->
          <item android:drawable="@color/default_green" /> <!-- default -->
      </selector>
      

      并将这些颜色代码添加到颜色值中,

       <color name="blue">#ff0000ff</color>
      <color name="green">#278727</color>
      <color name="default_green">#449D44</color>
      

      【讨论】:

        【解决方案4】:

        你几乎是对的只是你错过的一件事默认应该总是最后一个声明

        <selector xmlns:android="http://schemas.android.com/apk/res/android">
          <item android:drawable="#ff0000ff" android:state_focused="true" /> <!-- focused -->
          <item android:drawable="#278727" android:state_pressed="true"/>
         <item android:drawable="@color/yourDefaultColor" />
        </selector> 
        

        如果不起作用,请告诉我

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-27
          • 2017-06-01
          • 2021-05-29
          • 1970-01-01
          相关资源
          最近更新 更多