如何检测EditText由Android获得焦点.不是最终用户触摸编辑文本?

前端之家收集整理的这篇文章主要介绍了如何检测EditText由Android获得焦点.不是最终用户触摸编辑文本?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如我所知,android.widget.EditText可以通过2个原因得到关注:

案例1.最终用户按目的触摸编辑文本.

案例2.系统自动提供编辑文本.

>导航
>首先默认焦点
> ……

我的问题是:如何才能检测到案例2? (事件监听器?)

我想要检测案例2的原因是:我想设置当前位置是编辑文本通过案例2获得焦点的最后位置.

EditText.setOnFocusChangeListener适用于case1,case2所以看来我不能使用它.

谢谢!

解决方法

更新了您的活动中的实现android.view.View.OnFocusChangeListener(例如)
并设置yourView.setOnFocusChangeListener(yourActivity)如果将它与OnTouchListener结合使用,则可以过滤掉用户触摸,因为首先调用onTouch() – 您可以设置布尔类成员.确保在焦点丢失时重置该布尔值.
代码应该有点像这样:
...
import android.view.View.OnFocusChangeListener;

...

public class MainActivity extends Activity implements OnFocusChangeListener,OnTouchListener {

    boolean userTouchedView;

    @Override
    public View onCreateView(...) {
        ...
        yourView.setOnFocusChangeListener(this);
        ...
    }

    @Override
    public void onFocusChange(View v,boolean hasFocus) {
        if (hasFocus && !userTouchedView)) {
            //YOUR CASE 2
        }
        else if(!hasFocus)
            userTouchedView=false;
    }

    @Override
    public boolean onTouch(final View v,MotionEvent event) {
        if(v==yourView){
            userTouchedView=true;
        }
    }

}
原文链接:https://www.f2er.com/android/308863.html

猜你在找的Android相关文章