首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置按钮的state_pressed

如何设置按钮的state_pressed
EN

Stack Overflow用户
提问于 2013-01-18 18:47:38
回答 3查看 13.5K关注 0票数 2

我使用xml文件为我的按钮着色。在xml中,有这段代码来定义单击按钮时按钮的颜色。

代码语言:javascript
复制
    <?xml version="1.0" encoding="utf-8"?>
<selector
    xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true" >
        <shape>
            <gradient
                  android:startColor="@color/mainRaddoppiaButtonBackgroundEnd"
                android:endColor="@color/mainRaddoppiaButtonBackgroundStart"

                android:angle="270" />
            <stroke
                android:width="0dp"
                android:color="@color/mainRaddoppiaButtonBackgroundStart" />
            <corners
                android:radius="3dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>

    <item android:state_focused="true" >
           <shape>
            <gradient
                  android:startColor="@color/mainRaddoppiaButtonBackgroundEnd"
                android:endColor="@color/mainRaddoppiaButtonBackgroundStart"

                android:angle="270" />
            <stroke
                android:width="0dp"
                android:color="@color/mainRaddoppiaButtonBackgroundStart" />
            <corners
                android:radius="3dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>

    <item>        
        <shape>
            <gradient
                android:startColor="@color/mainRaddoppiaButtonBackgroundStart"
                android:endColor="@color/mainRaddoppiaButtonBackgroundEnd"
                android:angle="270" />
            <stroke
                android:width="0dp"
                android:color="@color/mainRaddoppiaButtonBackgroundStart" />
            <corners
                android:radius="3dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>
</selector>

在java中,有没有可能让我的按钮保持按下状态,并用xml文件中设置的"state_pressed“值给它上色?

像这样的东西:

代码语言:javascript
复制
  public void onClick(View button) {
     button.seLayout(R.xml.xmlFileName.state_pressed)
}

当然,这段代码没有任何意义,我只是想让您理解我想要做的事情

EN

回答 3

Stack Overflow用户

发布于 2013-01-18 18:57:09

尝尝这个。

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/btn_pressed"
      android:state_pressed="true"/>
<item android:drawable="@drawable/btn_normal" />
</selector>
票数 4
EN

Stack Overflow用户

发布于 2013-01-18 19:19:57

使用StateListDrawable通过代码设置选择器,如下所示:

代码语言:javascript
复制
StateListDrawable states = new StateListDrawable();
states.addState(new int[] {android.R.attr.state_pressed},getResources().getDrawable(R.drawable.pressed));
states.addState(new int[] {android.R.attr.state_focused},getResources().getDrawable(R.drawable.focused));
states.addState(new int[] { },getResources().getDrawable(R.drawable.normal));

 button.setBackgroundDrawable(states);//FOR BUTTON
票数 2
EN

Stack Overflow用户

发布于 2017-06-20 21:05:32

使用以下命令:

代码语言:javascript
复制
StateListDrawable states = new StateListDrawable(){
    @Override
    protected boolean onStateChange(int[] stateSet) {
        //
    }
};
itemView.setBackground(states);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14397282

复制
相关文章

相似问题

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