【问题标题】:Button not changing color onClick按钮不改变颜色 onClick
【发布时间】:2013-09-24 04:23:35
【问题描述】:

我想我已经得到了所需的东西。我想更改 state_pressed 上按钮的颜色。我有以下资源:

color.xml 中的值具有以下内容:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="blue">#045FB4</color>
    <color name="clicked">#A9E2F3</color>
</resources>

drawable文件夹中的button_dashboard,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@color/blue" />
    <item android:drawable="@color/clicked" android:state_pressed="true"/>

</selector>

最后是我布局中的这个按钮:

<Button
        android:id="@+id/button2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1.0"
        android:background="@drawable/button_dashboard"
        android:text="Button" />

我做错了吗?我还没有编写任何 onClick 代码,因为此时不需要(只是试验)。

【问题讨论】:

  • 你到底想改变什么...文本颜色或背景颜色?因为您使用颜色作为可绘制...
  • 背景。而不是使用 PNG,我只想使用纯色作为背景。
  • 如果您想这样做,您应该使用这些颜色创建自定义可绘制对象,并将可绘制对象设置为背景,而不是颜色。
  • @Asim 你可以利用 在这种情况下,看看我的回答..

标签: android button colors


【解决方案1】:

试试:

<?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">

        <item android:drawable="@color/clicked" android:state_pressed="true"/>
        <item android:drawable="@color/blue" />


    </selector>

【讨论】:

    【解决方案2】:

    将drawable文件夹中button_dashboard的内容改成这个

    <?xml version="1.0" encoding="UTF-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true" >
            <shape>
                <solid
                    android:color="@color/clicked" />
    
            </shape>
        </item>
        <item>
            <shape>
                <solid
                    android:color="@color/blue" />
            </shape>
        </item>
    </selector>
    

    最后是布局中的这个按钮:

    <Button
            android:id="@+id/button2"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1.0"
            android:background="@drawable/button_dashboard"
            android:text="Button" />
    

    希望这会有所帮助..

    【讨论】:

      【解决方案3】:

      使用这个 可绘制/selector.xml

      <?xml version="1.0" encoding="utf-8"?>
      <selector xmlns:android="http://schemas.android.com/apk/res/android" >
           <item android:state_focused="true" android:drawable="@color/Red"/>
           <item android:state_pressed="true" android:drawable="@color/Red" />
           <item android:drawable="@color/White" /> 
      </selector>
      

      在oncreate方法中设置为按钮背景

      btn.setBackgroundResource(R.drawable.selector);
      

      【讨论】:

        【解决方案4】:

        将以下行添加到您的按钮布局中:

        android:clickable="true"
        

        所以布局中的按钮现在应该是:

        <Button
                android:id="@+id/button2"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1.0"
                android:clickable="true"
                android:background="@drawable/button_dashboard"
                android:text="Button" />
        

        【讨论】:

          【解决方案5】:

          在您的 button_dashboard 中再添加一行

          <?xml version="1.0" encoding="utf-8"?>
          <selector xmlns:android="http://schemas.android.com/apk/res/android">
          
              <item android:drawable="@color/clicked" android:state_pressed="true"/>
              <item android:drawable="@color/clicked" android:state_selected="true"/>
              <item android:drawable="@color/blue" />
          
          </selector>
          

          在此之后,请在您的按钮点击监听器中添加一行代码

          button2.setSelected(true);
          

          希望这会对你有所帮助。

          【讨论】:

            【解决方案6】:

            这个怎么样?

            <?xml version="1.0" encoding="utf-8" ?>
            <selector xmlns:android="http://schemas.android.com/apk/res/android">    
                <item android:state_pressed="true">        
                    <color android:color="@color/clicked" />    
                </item>    
                <item android:state_pressed="false">        
                    <color android:color="@color/blue" />    
                </item>
             </selector>
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-01-12
              • 1970-01-01
              • 2012-05-02
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多