我想在我的Android应用程序中创建一个按钮,这样当我将手指放在按钮上时(按钮会聚焦)此时按钮的图标应该改变(通过button.setBackgroundDrawable或类似的东西)和当按钮失去焦点时(我将手指抬离它)然后它完成它应该做的事情并且图标保持变化(转到另一个活动,检查smth,输入smth等等)。我不知道哪些功能在给定焦点时以及何时失去它时都会说出来。有什么想法吗?
答案 0 :(得分:0)
在触控模式下,您无法获得焦点。一旦触摸按钮,它就处于按下模式。焦点只适用于具有硬件按钮(或鼠标)的设备,允许选择视图,然后“按”它。
答案 1 :(得分:0)
将TouchListener注册到按钮:
button.setOnTouchListener(new ButtonDownListener());
这里是你的听众
public class ButtonDownListener implements OnTouchListener{
public boolean onTouch(View v, MotionEvent event){
if(event == MotionEvent.ACTION_DOWN){
//do your stuff
}
else if(event == MotionEvent.ACTION_UP){
//do your stuff
}
return true;
}
}
答案 2 :(得分:0)
您可以像这样使用onTouchListener
button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP){
//This triggers when you lift your finger
} else if(event.getAction() == MotionEvent.ACTION_DOWN) {
//this triggers when you put your finger down
}
return false;
}
});
答案 3 :(得分:0)
在drawable中添加button_state.xml文件
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/onfocusonstatepressed" />
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/onstatepressed" />
<item android:state_focused="true" android:drawable="@drawable/onfocus"/>
<item android:state_focused="false" android:drawable="@drawable/normal" />
</selector>
接下来在主布局xml中为按钮添加一个属性
android:background="@drawable/button_state"