【问题标题】:How to set button selection color along with rounded corners in android?如何在android中设置按钮选择颜色和圆角?
【发布时间】:2012-09-07 18:30:54
【问题描述】:

我想为 android 中的按钮设置圆角,并在选择时更改按钮颜色。我正在做以下事情。

可绘制/push_button.xml

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

可绘制/push_button_background.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    >
    <solid android:color="#3F4040"/>
    <corners 
    android:radius="7dp"
    />
</shape>

在代码中,我正在使用

android:background="@drawable/push_button"

这里的问题是,按钮颜色在选择和取消选择时设置正确。但是,圆角不起作用。

如何做到这一点? 如果我使用

android:background="@drawable/push_button_background"

然后,圆角可以使用,但选择时按钮颜色更改不起作用

如何实现?

我已经推荐了this 链接。即使那样也没有帮助!

【问题讨论】:

  • 你可能需要用你想要的颜色和半径定义另外几个drawables,并将@color/color更改为你定义的drawables
  • @Aprian.. 你能详细说明一下吗?我是安卓新手!!可以给点样品吗?

标签: android background-color rounded-corners android-button


【解决方案1】:

我通过几次尝试和错误尝试找到了我的问题的答案。

这是解决方案。

<?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/green"/>
    <corners 
    android:radius="7dp"/>
    </shape>
 </item>

 <item android:state_focused="true" >
    <shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="@color/green"/>
    <corners 
    android:radius="7dp"/>
    </shape>
 </item>

 <item android:state_focused="false" >
    <shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="@color/red"/>
    <corners 
    android:radius="7dp"/>
    </shape>   
 </item>

 <item android:state_pressed="false" >
    <shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="@color/red"/>
    <corners 
    android:radius="7dp"
    />
    </shape>
 </item> 

</selector>

【讨论】:

    【解决方案2】:

    我所做的是定义形状并指定每个角的 dp。

    <shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" android:padding="90dp">
    <solid android:color="#FFFFFF"/>
    <padding />
    <corners
        android:bottomRightRadius="15dp"
        android:bottomLeftRadius="15dp"
        android:topLeftRadius="15dp"
        android:topRightRadius="15dp"/>
    
    </shape>
    

    如果你增加每个角落的 dp,它会使按钮更圆。

    【讨论】:

    • 您尝试过使用样式吗?您可能希望为按钮创建一个,然后将其应用于哪个按钮。我之前没有尝试过按钮,但我知道您可以使用样式添加选择器并更改视图的不同方面(高度、颜色、选择器、图像等)。
    【解决方案3】:

    我已经成功地完成了您所描述的事情。我做了以下事情:

    首先,我创建了一个扩展 Button 的新类。在这个类中,我创建了一个名为 setState() 的方法:

    public void setState (int s)
    {
        if (s > 0 && s < 4 &&)
        {
            this.state = s;
            switch (state)
            {
                case 1:
                    setBackgroundDrawable (def_gray);
                    break;
    
                case 2:
                    setBackgroundDrawable (lt_gray);
                    break;
    
                case 3:
                    setBackgroundDrawable (black);
            }
        }
    }
    

    您在上面看到的三个背景可绘制对象是描述按钮外观的 XML 文件。它们大多相同,但每种颜色的设置有所不同。默认的灰色按钮是这样描述的:

    <?xml version="1.0" encoding="utf-8"?>
    
    <selector
        xmlns:android="http://schemas.android.com/apk/res/android">
    
        <item>
    
            <shape>
    
                <gradient
                    android:startColor="#333333"
                    android:endColor="#333333" />
    
                <stroke
                    android:width="2dp"
                    android:color="@android:color/white" />
    
                <corners
                    android:radius="5dp" />
    
                <padding
                    android:left="2dp"
                    android:top="2dp"
                    android:right="2dp"
                    android:bottom="2dp" />
    
            </shape>
    
        </item>
    
    </selector>
    

    据我所知,XML 格式有望用于在按钮面上配置颜色渐变。因为这不是我想要的,所以我将两个颜色值设置为相同并且背景颜色是一致的。您可能需要对颜色值进行一些试验,但看起来您已经掌握了这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-08
      • 1970-01-01
      • 2020-11-27
      相关资源
      最近更新 更多