安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/