2010-05-31 48 views
8

我有一個TextViewandroid:maxLength設置爲3和另一個android:maxLength設置爲7Focus next textview

我想要重點自動移動到第二個TextView一旦3字符的第一個TextView填滿了。如何在不繼承TextView並編寫自定義實現的情況下實現這一目標?

回答

6

我還沒有嘗試,但這可能工作。

設置一個監聽火的時候,文本被改變,這種用途

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

5

對於未來的讀者期待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) { 
    } 
});