2011-02-19 111 views
47

我已經有用戶使用在其軟鍵盤上具有製表鍵的平板電腦。我正在使用一個表格視圖,並且在當前行下面的EditText字段的一行中有3個EditText字段。你可以在XML佈局中設置「製表順序」嗎?

當用戶點擊標籤時,它會將它們帶到下一個字段,而不是右側的下一個字段。

在佈局中是否有設置Tab鍵順序的方法,還是僅以編程方式完成?

如果它只能用Java完成,它究竟做了什麼?

感謝您的NextFocusRight尖端,但它沒」似乎工作(或我做錯了什麼)

這裏是我使用的代碼。我必須添加ime選項才能讓「下一個」按鈕顯示在我的模擬器中。你看到我這樣做有什麼問題嗎?

<EditText 
android:id="@+id/bikeHHT" 
android:layout_width="50dip" 
android:layout_height="40dip" 
android:textSize="14px" 
android:maxLength="2" 
android:nextFocusLeft="@+id/bikeMMT" 
android:imeOptions="actionNext" 
android:layout_column="1"/> 
<EditText 
android:id="@+id/bikeMMT" 
android:layout_width="50dip" 
android:layout_height="40dip" 
android:textSize="14px" 
android:nextFocusRight="@+id/bikeSST" 
android:imeOptions="actionNext" 
android:maxLength="2"/> 

回答

84

android:nextFocusDown替代android:nextFocusLeft。 「下一個」軟鍵或TAB鍵正在尋找下一個「向下」焦點,而不是向左或向右。

+1

謝謝,就是這樣!欣賞它。 – dalesit 2011-02-22 14:19:03

4

還有一個更好的辦法。有一個XML參數可以放入佈局中,當用戶完成它們時,會自動將光標移動到每個EditText。這允許更簡單的形式實現。

問題是,對於這個該死的生活還記得它是什麼地獄......

一定要檢查出的Android版本:*的nextfocus XML屬性。正常形式的行動是下降。但是也許右邊有一個按鈕可以讓你接受下一個焦點(比如點擊輸入或類似)。

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

還有一些程序上的選擇:

http://developer.android.com/reference/android/view/View.html#setNextFocusDownId(int

9

你檢查android:imeOptions="actionNext"屬性的EditText上?

它用虛擬鍵盤中的「下一步」替換回車鍵的名稱,並通過點擊它 - 焦點跳轉到下一個字段。

在你的佈局,你會做這樣的事情

<EditText 
    ... 
    android:text="Field 1" 
    android:imeOptions="actionNext" /> 
<EditText 
    ... 
    android:text="Field 2" 
    android:imeOptions="actionNext" /> 

而且在Java中

TextView field2 = (TextView) field1.focusSearch(View.FOCUS_RIGHT); 
field2.requestFocus(); 

它是由你來決定哪些領域將下一個請求焦點。

+0

謝謝,如果我不能得到NextFocusRight工作,我將不得不使用這一點,但似乎是一個痛苦添加代碼只是爲了解決Tab順序。 – dalesit 2011-02-19 14:14:03

+0

感謝這個代碼是有益的.. !!! – 2014-01-08 14:42:36

3

您可能正在尋找屬性android:nextFocusRight,android:nextFocusLeft,android:nextFocusUp和android:nextFocusDown。如果選項卡按鈕的默認行爲將焦點向下移動到第二行,那麼我認爲您可以將android:nextFocusDown設置爲您希望下一步獲得焦點的視圖的ID。然後當用戶按下標籤時,它將把焦點移動到你指定的任何視圖上,即使在這種情況下它恰好在當前視圖的右側,而不是在它的下面。

+0

我編輯了我原來的帖子以顯示我正在使用的代碼,我嘗試了NextFocusRight,它似乎沒有做任何事情,你能否看到如果這看起來是正確的? – dalesit 2011-02-19 14:14:41

34

我也注意到,在您參考:

android:nextFocusRight="@+id/bikeSST" 

如果您還沒有定義的ID,如果你也許引用的元素是在.xml文件下是必需的「+」字符。

否則,如果它已經如上所定義的(或包括),則可以省略「+」字符:不使用的

android:nextFocusRight="@id/bikeSST" 

的優點的「+」當您正在引用的ID應該已經存在,是IDE和Lint檢查可以檢測到一個錯誤情況:你指的是一個ID,其實不是存在。

如果包含了「+」,那麼你正在創建它,如果不存在,無法進行此項檢查。

0

更換android:nextFocusLeftandroid:nextFocusForward

相關問題