如何检测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;
        }
    }

}

以上是来客网为你收集整理的如何检测EditText由Android获得焦点.不是最终用户触摸编辑文本?全部内容,希望文章能够帮你解决如何检测EditText由Android获得焦点.不是最终用户触摸编辑文本?所遇到的程序开发问题。

如果觉得来客网网站内容还不错,欢迎将来客网网站推荐给程序员好友。