Loc*_*Loc 6 android focus onfocus autofocus android-edittext
一个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;
}
}
}
Run Code Online (Sandbox Code Playgroud)