当前位置: 首页 > 知识库问答 >
问题:

Android drawable selector状态按下为真,按钮必须改变背景颜色

端木昱
2023-03-14

这肯定是个愚蠢的问题,因为stackoverflow中有很多相关的问题,也许答案很简单。但不管怎样,它在这里。我有一个按钮,并为它创建一个可绘制的xml。所以在我的按钮下面是代码:

<Button
            android:id="@+id/button2"
            style="?android:attr/buttonStyleSmall"
            android:layout_width="match_parent"
            android:layout_height="30dip"           
            android:background="@drawable/button2" 
            />

现在,在我的drawable/button2下,我创建了一个选择器,其中我没有使用图像。下面是我的代码:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
    <shape>
        <solid
            android:color="#FF9E35" />
        <stroke
            android:width="1dp"
            android:color="#992f2f" />
        <corners
            android:radius="0dp"
            android:topLeftRadius="8dp"
            android:bottomLeftRadius="0dp"
            android:topRightRadius="0dp"
            android:bottomRightRadius="8dp" />
        <padding
            android:left="5dp"
            android:top="5dp"
            android:right="5dp"
            android:bottom="5dp" />
    </shape>
 </item>
 <item>
    <shape>
        <gradient
            android:startColor="#FF9E35"
            android:endColor="#992f2f"
            android:angle="270" />
        <stroke
            android:width="1dp"
            android:color="#992f2f" />
        <corners
            android:radius="0dp"
            android:topLeftRadius="8dp"
            android:bottomLeftRadius="0dp"
            android:topRightRadius="0dp"
            android:bottomRightRadius="8dp" />
        <padding
            android:left="5dp"
            android:top="5dp"
            android:right="5dp"
            android:bottom="5dp" />
    </shape>
    </item>
   </selector>

现在我要完成的是,当我单击该按钮时,它将其背景颜色改变为state_pressed所暗示的颜色,并且如果单击另一个按钮(最有可能是切换按钮)则恢复正常,在后面的代码或xml选择器中有没有这样做?

谢谢,

JC

共有1个答案

焦苏燕
2023-03-14

在Java代码中,您实际上可以做的是:

public class LaunchActivity extends Activity implements OnTouchListener{

    private Button yourButton;


    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);        
        setContentView(R.layout.main);      

        yourButton= (Button)findViewById(R.id.yourButton);
        yourButton.setOnTouchListener(this); 

    }

    @Override
    public boolean onTouch(final View view, MotionEvent event) {

    final int action = event.getAction();

        if(view.getId()==R.id.yourButton){
            if(action == MotionEvent.ACTION_DOWN)
                  yourButton.setBackgroundResource(R.drawable.ic_button_pressed);
            if(action == MotionEvent.ACTION_UP)
                  yourButton.setBackgroundResource(R.drawable.ic_button_normal);
        }

 }
}

如果他被按下,它会改变按钮的背景。当用户松开手指时,它会再次改变背景。如果只想在按下另一个按钮的情况下更改背景,不要写ACTION_UP大小写,在另一个按钮的另一个ACTION_DOWN大小写中,更改另一个按钮的背景,如下所示:

 @Override
        public boolean onTouch(final View view, MotionEvent event) {

    final int action = event.getAction();

        if(view.getId()==R.id.yourButton){
            if(action == MotionEvent.ACTION_DOWN){
                  secondButton.setBackgroundResource(R.drawable.ic_button_normal);
                  yourButton.setBackgroundResource(R.drawable.ic_button_pressed);
            }
        }
            if(view.getId()==R.id.secondButton){
            if(action == MotionEvent.ACTION_DOWN){
                  yourButton.setBackgroundResource(R.drawable.ic_button_normal);
                  secondButton.setBackgroundResource(R.drawable.ic_button_pressed);
            }
        }

 }

希望有帮助!

 类似资料:
  • 解决方案见Deepa答案:) 我阅读了StackOverFlow中给出的所有解决方案,但在我的情况下似乎没有一个可行。问题是我的应用程序中有几个按钮,它们会对用户的操作做出不同的反应。例如,当应用程序启动时,除了两个按钮之外,所有按钮都被禁用。因此我将默认的drawable设置到XML中。当我打开一个文件时,所有这些都是可点击的,但其中一些,当按下时,需要保持按下(我已经这样做了),但其他的只是需

  • 我对改变晶圆厂的背景色有一个问题,似乎晶圆厂后面有另一个背景 这是我的代码 现在唯一有效的解决方案是改变我的应用程序上的颜色口音,但它会影响其他UI元素

  • 我有一个按钮,它包含一个抽屉和文本。我希望按钮的背景不同于正常提供的(最好是一个普通的颜色)。这工作得很好,我只需在XML文件中使用属性并相应地分配颜色。然而,我希望背景改变为不同的颜色时,选择或聚焦(状态选择器)。 我尝试用定义的颜色在一个可绘制的文件夹中创建一个选择器(当处理按钮的文本时很好地工作),如下所示: 并将此xml设置为属性,如下所示: 但这会引起一个力闭合,说明: 但资源就在那里。

  • 当我的按钮被按下时,我如何用xml更改文本和背景颜色? 要更改文本颜色,可以执行以下操作: 要更改背景,我可以做(在具有可绘制引用的选择器/项中使用它): 但我怎么能两样都做呢?假设我想要: 默认:黑色文本/白色背景 按下:白文/蓝底 我完全忘记了背景和文本颜色是分开管理的,所以我是这样做的: 在MyBackgroundColors.xml中,我管理背景,在FiltersButtonColors.

  • 本文向大家介绍bootstrap改变按钮加载状态,包括了bootstrap改变按钮加载状态的使用技巧和注意事项,需要的朋友参考一下 bootstrap里面有个激活按钮的时候,按钮变成不可用的; 按照官网里面的方法介绍是在button按钮加个 data-loading-text="Loading..." 属性,然后js总体代码是这样: 其中autocomplete="off"属性是针对FF浏览器在页

  • 本文向大家介绍python之pyqt5通过按钮改变Label的背景颜色方法,包括了python之pyqt5通过按钮改变Label的背景颜色方法的使用技巧和注意事项,需要的朋友参考一下 使用setStyleSheet方法修改得到自己想要的字体,大小,颜色 color:rgb()中的四个参数,前三个是控制颜色,第四个控制透明度 font-size:设置字体大小 font-weight:bold可设置字