2011-06-22 110 views
18

我在一個活動中使用了4個EditText字段和2個微調。這些組件的順序是2 EditText,然後是2個紡紗器,然後是2個EditText字段。微調沒有得到重點

的問題,當我從EditText轉移焦點(用軟鍵盤按鈕旁邊的幫助下),以微調器,微調不會得到焦點發生和焦點轉移到下一個EditText領域,它被放置在微調之後。

我已經在微調器上使用了requestfocus(),但它不起作用。

如何確保微調器獲得焦點?

+1

請給予答案標誌。 – JJD

+1

減號1不允許選擇的答案。 –

回答

3

這是在黑暗中拍攝的,但嘗試在微調器上設置可重點屬性(在XML或代碼中;無論您以何種方式進行)。

http://developer.android.com/reference/android/view/View.html#attr_android:focusable

編輯:另外,看到這個問題:Can't manage to requestFocus a Spinner

+0

thanx我已通過執行以下操作解決了問題:1)我將Spinner對象置於頂部(在onCreate方法中),以確保我的代碼首先被執行。 2)我使用以下內容: Spinner s1 =(微調)findViewById(R.id.spinner1); s1.setFocusable(真); s1.setFocusableInTouchMode(真); – Shameen

+1

@Shameen你可以用XML來設置這些標誌。 –

19

謝謝,我已經這樣做解決了以下內容:

  1. 我設置在頂部(在onCreate方法中的微調對象)只是爲了確保我的代碼得到執行第一個
  2. 我用了以下內容:

    Spinner s1 = (Spinner) findViewById(R.id.spinner1); 
    s1.setFocusable(true); 
    s1.setFocusableInTouchMode(true); 
    s1.requestFocus(); 
    
+0

你明顯從@shanet得到了解決方案,所以你應該選擇他們的答案。 –

31

我設法找到其他的解決方案,然後重新定位我的微調。在EditText上之前微調,添加此監聽器:

editTextBefore.setOnEditorActionListener(new OnEditorActionListener() { 
    @Override 
    public boolean onEditorAction(TextView textView, int actionId, KeyEvent event) { 
     if (actionId == EditorInfo.IME_ACTION_NEXT) { 
      hideKeyboard(); 
      textView.clearFocus(); 
      spinner.requestFocus(); 
      spinner.performClick(); 
     } 
     return true; 
    } 
}); 

您還需要將這些行添加到能夠微調,以獲得焦點:

spinner.setFocusable(true); // can be done in XML preferrable 

我hideKeyboard功能只是一個視覺細節,我想添加這樣的鍵盤得到隱藏:

private void hideKeyboard() { 
    InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
    inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), 
      InputMethodManager.HIDE_NOT_ALWAYS); 
} 

希望我在這個棘手的問題幫助。可以是found in the documentation

+1

您不必設置focusableInTouchMode? –

+0

設置focusableInTouchMode會很有幫助。另外,如果你在XML中嘗試這種方式,似乎不起作用,請嘗試以編程方式。 –

+0

真棒謝謝!!!! –

0

我剛剛有同樣的問題。我使用nextFocusDown/Up/Left/Right屬性解決了這個問題。

<EditText 
    android:id="@+id/tPhone" 
    ... 
    android:focusableInTouchMode="true" 
    android:focusable="true" 
    android:nextFocusDown="@+id/sCountry"/> 

<Spinner 
    android:id="@+id/sCountry" 
    .... 
    android:focusableInTouchMode="true" 
    android:focusable="true" 
    android:nextFocusUp = "@+id/tPhone" 
    android:nextFocusDown="@+id/tStreet"/> 

<EditText 
    android:id="@+id/tStreet" 
    ... 
    android:visibility="gone" 
    android:focusableInTouchMode="true" 
    android:focusable="true" 
    android:nextFocusUp = "@+id/sCountry"/> 

但爲什麼這是甚至必要...打我。