android - 如何检测EditText得到了Android的关注。不是最终用户触摸编辑文本?

标签 android android-edittext focus onfocus autofocus

android.widget.EditText据我所知,可以通过两个原因获得关注:

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

案例 2。系统自动给出编辑文本。

  • 导航
  • 第一个默认焦点
  • ...

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

我想检测案例 2 的原因是:如果编辑文本通过案例 2 获得焦点,我想将当前位置设置为最后位置。

EditText.setOnFocusChangeListener 适用于 case1、case2,所以我似乎不能使用它。

谢谢!

最佳答案

已更新
在您的 Activity 中实现android.view.View.OnFocusChangeListener(例如) 并设置 yourView.setOnFocusChangeListener(yourActivity)
如果将其与 OnTouchListener 结合使用,则可以过滤掉用户触摸,因为首先调用 onTouch() - 您可以设置 bool 类成员。确保在失去焦点时重置该 bool 值。

代码应该是这样的:

...
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;
        }
    }

}

关于android - 如何检测EditText得到了Android的关注。不是最终用户触摸编辑文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26810816/

相关文章:

android - ASNE 库获取访问 token

android - Andengine 淡入/淡出和 alpha 修改器不起作用

java - 必须声明为抽象或实现抽象方法

html - 如何去除焦点上的 iframe 高亮边框?

c# - 在 WPF DataGrid 中禁用选择

android - 简单的 C++ 异步 http 客户端

android-layout - 设置EditText错误图标的色彩

java - 仅接受几个字符的 EditText

Android - 如何使用 Html.ImageGetter 以在编辑文本或 TextView 中显示图像数量

java - 禁用 JButton 时 JFrame 焦点问题