-3

我想向我的按钮添加一些操作。我希望它们在您触摸它们时改变颜色,并在您向上移动手指时返回原始颜色。但是出了点问题,我不知道是什么。

btn1.setOnTouchListener(new View.OnTouchListener(){

    @Override
    public boolean OnTouch(View v,MotionEvent mevent){
        switch(mevent.getAction()){
            case MotionEvent.ACTION_UP:{
                Toast.makeText(getApplicationContext(),"merhaba",Toast.LENGTH_LONG).show();
                Button view=(Button) v;
                view.getBackground().clearColorFilter();
                view.invalidate();

                break;  }
            case MotionEvent.ACTION_DOWN:{Button view=(Button) v;
                    view.getBackground().setColorFilter(0x77000000,PorterDuff.Mode.SRC_ATOP);
                    view.invalidate();
                break;

            }

                case MotionEvent.ACTION_CANCEL:{
                        Button view=(Button) v;
                        view.getBackground().clearColorFilter();
                        view.invalidate();
                        break;
            }       }
            return true;}
});

问题是什么?

4

1 回答 1

1

您可以在可绘制的 xml 文件上编写按钮单击效果。示例button_selector.xml

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

将此可绘制文件作为按钮的背景。例子

 <Button           
       android:layout_width="wrap_content"
       android:layout_height="50dp"
       android:textSize="14sp"
       android:background="@drawable/button_selector"
       android:text="Delete"
       android:textStyle="bold"/>

然后,当您单击按钮或聚焦在按钮上时,背景将发生变化。

于 2015-05-20T16:14:36.980 回答