Android中有
ImageButton
,需要在按下按钮时更改图像,以便用户清楚按下按钮。
我尝试过的是在我的图片所在的drawable文件夹中使用带有选择器的xml。我的代码如下:
XML
<ImageButton
android:id="@+id/upButton"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:scaleType="fitXY"
android:src="@drawable/up_button"
android:background="#00000000"/>
up_button.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/up_pressed"
android:state_pressed="true"/>
<item android:drawable="@drawable/up"/>
</selector>
java onTouchListener
按下按钮时会更改textView
的文本,并在释放按钮时将其更改回来。
upButton.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()){
case MotionEvent.ACTION_DOWN:
textView.setText("Up button pressed.");
break;
case MotionEvent.ACTION_UP:
textView.setText("Up button released.");
break;
}
return true;
}
});
在本网站上搜索类似问题时,我发现了Android button on pressed,但由于没有答案,因此不是很有帮助。我也发现了很多其他类似的问题并尝试了这些答案,但都没有奏效。我开始使用Android文档中的内容,并在通过其他问题时尝试了它的变体。 https://developer.android.com/guide/topics/ui/controls/button.html
答案 0 :(得分:2)
如果您在按钮上使用onTouch()
,则其onClick()
功能将无效。所以你可以通过为你触摸的按钮添加某些方法来让它工作:
upButton.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()){
case MotionEvent.ACTION_DOWN:
textView.setText("Up button pressed.");
upButton.setPressed(true);
//Use this if you want to perform onClick() method.
//upButton.performClick();
break;
case MotionEvent.ACTION_UP:
textView.setText("Up button released.");
upButton.setPressed(false);
break;
}
return true;
}
});