1
我有兩個EditText Listview中的每一行。行可能有n個數字。我想在第一行的第一個EditText中輸入數值,然後在軟鍵盤上按next。重點應放在第一行的第二個EditText。比在第二個EditText中輸入數值之後,在軟鍵盤上按next鍵,焦點應該進入第二排第一個EditText。在此我附上了我的xml和適配器代碼。如何將焦點集中在列表視圖中的下一個編輯文本
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="5dp"
android:layout_weight="10"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<com.vijay.textview.AutofitTextView
android:layout_gravity="center_vertical"
android:id="@+id/txt_component"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="6"
android:fontFamily="sans-serif"
android:text="@string/empty_string"
android:textColor="@color/planned_schedule_list_item_color"
android:textSize="@dimen/bol_listview_font_size"/>
<com.vijay.edittext.AutoFitEditText
android:id="@+id/edt_ready_to_go"
android:paddingBottom="3dp"
android:layout_marginTop="-15dp"
style="@style/scan_text_fields_white_bg"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="4"
android:fontFamily="sans-serif"
android:inputType="number"
android:textColor="@color/planned_schedule_list_item_color"
android:textSize="@dimen/bol_listview_header_font_size"
android:imeOptions="flagNoExtractUi"
android:maxLength="5"
android:nextFocusRight="@id/edt_damaged"/>
<com.vijay.edittext.AutoFitEditText
android:id="@+id/edt_damaged"
android:paddingBottom="3dp"
android:layout_marginTop="-15dp"
style="@style/scan_text_fields_white_bg"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="4"
android:fontFamily="sans-serif"
android:inputType="number"
android:textColor="@color/planned_schedule_list_item_color"
android:textSize="@dimen/bol_listview_header_font_size"
android:imeOptions="flagNoExtractUi"
android:maxLength="5"/>
</LinearLayout>
</LinearLayout>
我的適配器代碼:
holder.edtReadyToGo.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_NEXT) {
if (position + 1 != mData.size()) {
mListView.smoothScrollToPosition(position+1);
mListView.postDelayed(new Runnable() {
public void run() {
AutoFitEditText nextField = (AutoFitEditText) holder.edtDamaged.focusSearch(View.FOCUS_RIGHT);
if (nextField != null) {
nextField.requestFocus();
}
}
}, 200);
return true;
}
}else if (actionId == EditorInfo.IME_ACTION_DONE) {
holder.edtReadyToGo.setCursorVisible(false);
}
return false;
}
});
holder.edtDamaged.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_NEXT) {
if (position + 1 != mData.size()) {
mListView.smoothScrollToPosition(position+1);
mListView.postDelayed(new Runnable() {
public void run() {
AutoFitEditText nextField = (AutoFitEditText) holder.edtReadyToGo.focusSearch(View.FOCUS_DOWN);
if (nextField != null) {
nextField.requestFocus();
}
}
}, 200);
return true;
}
} else if (actionId == EditorInfo.IME_ACTION_DONE) {
holder.edtDamaged.setCursorVisible(false);
}
return false;
}
});
這裏我的第二個EditText上(edt_damaged)工作的罰款。當我點擊下一個時,它會自動聚焦到下一個字段。但第一個EditText(edt_ready_to_go)不起作用。請幫我解決我的問題。
我會盡量讓你知道.. !! – Vijay
它工作正常。但是,當它顯示在最後一行時,它顯示在第一個編輯文本中完成。所以我們不能移動到最後一行的第二個編輯文本。任何想法。?? – Vijay
將android:windowSoftInputMode =「adjustResize」更改爲「adjustPan」 – Krutik