Focus next textview

问题描述:

我有一个TextViewandroid:maxLength设置为3和另一个android:maxLength设置为7Focus next textview

我想要重点自动移动到第二个TextView一旦3字符的第一个TextView填满了。如何在不继承TextView并编写自定义实现的情况下实现这一目标?

我还没有尝试,但这可能工作。

设置一个监听火的时候,文本被改变,这种用途

addTextChangedListener(TextWatcher watcher) 

然后基于文本的长度,你可以请求焦点切换到下一个字段。

如果您想查找下一个字段,您可以拨打View.focusSearch(View.FOCUS_FORWARD)在指定的方向上查找可以聚焦的最近视图。这实际上并没有把重点放在这个观点上。

+0

我这样做 - 公共无效onTextChanged(CharSequence中,诠释开始,诠释之前,诠释计数){ 如果(s.length()== 3 ){ Log.d(TAG,“下一个焦点在:”+ tv1.getNextFocusDownId()); tv1.requestFocus(View.FOCUS_DOWN); } 但它没有工作 - 我做错了什么? 当日志长度为3时,日志会正确打印该消息,但焦点不会自动切换到下一个视图。 – Naseer 2010-06-01 08:04:13

+0

请忽略我以前的评论 - tv2.requestFocus()工作。 谢谢! – Naseer 2010-06-01 08:14:58

+0

View.FOCUS_FORWARD不是View.focusSearch的允许值。只有真正的方向。 – dabluck 2017-02-07 20:27:11

对于未来的读者期待COPY/PASTE

int MAX_LENGTH = 3; 

txt1.addTextChangedListener(new TextWatcher() { 
    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
    } 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     if (s.length() == MAX_LENGTH) { 
      txt2.requestFocus(View.FOCUS_DOWN); 
     } 
    } 

    @Override 
    public void afterTextChanged(Editable s) { 
    } 
});