如我所知,android.widget.EditText可以通过2个原因得到关注:
案例1.最终用户按目的触摸编辑文本.
案例2.系统自动提供编辑文本.
>导航
>首先默认焦点
> ……
我的问题是:如何才能检测到案例2? (事件监听器?)
我想要检测案例2的原因是:我想设置当前位置是编辑文本通过案例2获得焦点的最后位置.
EditText.setOnFocusChangeListener适用于case1,case2所以看来我不能使用它.
谢谢!
解决方法
更新了您的活动中的实现android.view.View.OnFocusChangeListener(例如)
并设置yourView.setOnFocusChangeListener(yourActivity)如果将它与OnTouchListener结合使用,则可以过滤掉用户触摸,因为首先调用onTouch() – 您可以设置布尔类成员.确保在焦点丢失时重置该布尔值.
代码应该有点像这样:
并设置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; } } }