2012-06-12 162 views
0

我在EdiText中設置焦點時遇到問題。以下是我的EditText屬性。Android EditText焦點問題

   <EditText 
        android:id="@+id/gatekeeperDetailedtUnitNo" 
        android:layout_width="270dip" 
        android:layout_height="wrap_content" 
        android:layout_below="@id/gatekeeperDetailtxtUnitNo" 
        android:layout_marginTop="10dip" 
        android:hint="@string/unit_number" 
        android:inputType="number" 
        android:maxLength="8" 
        android:lines="1" /> 

現在我在6位數之後加了' - '。爲此我已經實現了TextWatcher。

edtUnitNo.addTextChangedListener(new TextWatcher() { 

     /** 
     * This method is used to change charSequence when user enter more 
     * then 6 character. 
     */ 
     public void onTextChanged(CharSequence s, int start, int before, 
       int count) { 
      if (count < 7) { 
       if (s.toString().contains("-")) { 
        Log.e(TAG, "< 7 Called"); 
        String[] st1; 
        st1 = s.toString().split("-"); 
        String st2 = st1[0]; 
        edtUnitNo.setText(st2); 
        edtUnitNo.requestFocus(); 
        edtUnitNo.requestFocus(EditText.FOCUS_RIGHT); 
       } 
      } 
      if (edtUnitNo.getText().toString().length() == 7) { 
       Log.e(TAG, "== 7 Called"); 
       String s1 = edtUnitNo.getText().toString(); 
       String s2 = s1.substring(0, 6); 
       char s3 = s.charAt(6); 
       edtUnitNo.setText(s2 + "-" + s3); 
      } 
     } 

     public void beforeTextChanged(CharSequence s, int start, int count, 
       int after) { 

     } 

     public void afterTextChanged(Editable s) { 

     } 
    }); 

例如,我的EditText值看起來像「123456-7」。 我在添加7位數字和' - '時遇到了問題。當我試圖刪除最後一個字符'7'時,焦點到達第0個位置。

但我想把焦點放在最後刪除的字符位置(6之後)。

+0

重點是什麼?或者你想讓光標(選擇)在特定的字符索引? – user370305

+0

是的,我想在刪除最後一個字符後將光標放在最後一個位置。 –

回答

2

edtUnitNo.setSelection(edtUnitNo.getText().length());在afterTextChanged功能........