单击按钮时更改按钮图标,当按钮焦点丢失时活动执行某些操作

时间:2013-11-28 14:24:38

标签: java android android-layout android-fragments android-button

我想在我的Android应用程序中创建一个按钮,这样当我将手指放在按钮上时(按钮会聚焦)此时按钮的图标应该改变(通过button.setBackgroundDrawable或类似的东西)和当按钮失去焦点时(我将手指抬离它)然后它完成它应该做的事情并且图标保持变化(转到另一个活动,检查smth,输入smth等等)。我不知道哪些功能在给定焦点时以及何时失去它时都会说出来。有什么想法吗?

4 个答案:

答案 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"