首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在android中设置按钮选择颜色和圆角?

如何在android中设置按钮选择颜色和圆角?
EN

Stack Overflow用户
提问于 2012-09-14 23:02:23
回答 3查看 26.8K关注 0票数 19

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

drawable/push_button.xml

代码语言:javascript
复制
<?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>

drawable/push_button_background.xml .xml

代码语言:javascript
复制
<?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>

在代码中,我使用

代码语言:javascript
复制
android:background="@drawable/push_button"

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

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

代码语言:javascript
复制
android:background="@drawable/push_button_background"

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

如何实现这个目标?

我已经引用了this链接。即使这样也没有帮助!!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-16 19:31:05

我已经找到了我的问题的答案,几乎没有试验和错误尝试。

以下是解决方案。

代码语言:javascript
复制
<?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>
票数 61
EN

Stack Overflow用户

发布于 2012-09-14 23:49:06

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

代码语言:javascript
复制
<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,它会使按钮变得更加圆润。

票数 2
EN

Stack Overflow用户

发布于 2012-09-15 00:41:58

我已经成功地做到了你所描述的。我做了以下工作:

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

代码语言:javascript
复制
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文件。它们大体上是相同的,但为每个颜色设置的颜色不同。默认的灰色按钮如下所示:

代码语言:javascript
复制
<?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格式预计将用于配置按钮表面的颜色渐变。因为这不是我想要的,所以我将两个颜色值设置为相同,并且背景颜色是一致的。您可能需要对颜色值进行一些实验,但看起来您已经掌握了这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12427107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档