如何在列表视图中聚焦下一个编辑文本
Posted
技术标签:
【中文标题】如何在列表视图中聚焦下一个编辑文本【英文标题】:How to focus next edit text in listview 【发布时间】:2017-01-17 03:59:28 【问题描述】:Listview 中的每一行都有 2 个 EditText。这些行可能是 n 个数字。我想在第一行的第一个 EditText 中输入值,然后在软键盘中按下一步。焦点应转到第一行的第二个 EditText。之后,我将在第二个 EditText 中输入值并在软键盘中按下一步,焦点应该转到第二行第一个 EditText。特此附上我的 xml 和适配器代码。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_
android:layout_>
<LinearLayout
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="5dp"
android:layout_weight="10"
android:layout_
android:layout_
android:orientation="horizontal">
<com.vijay.textview.AutofitTextView
android:layout_gravity="center_vertical"
android:id="@+id/txt_component"
android:layout_
android:layout_
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_
android:layout_
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_
android:layout_
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) 不起作用。请帮我解决我的问题。
【问题讨论】:
【参考方案1】:你可以通过设置试试
listview 到 android:descendantFocusability="afterDescendants" listview 到 setItemsCanFocus(true); 将您的活动设置为 android:windowSoftInputMode="adjustResize"【讨论】:
我会尽力让你知道..!! 一切正常。但是当它来到最后一行时,它在第一次编辑文本中显示完成。这样我们就不能移动到最后一行的第二个编辑文本。有什么想法吗?? 将 android:windowSoftInputMode="adjustResize" 更改为 "adjustPan" 您是否删除了您之前尝试过的其他列表视图代码。我已经实现了一个示例代码,它对我来说工作正常 是的..我删除了所有..如果你不介意你可以发布那个样本..拜托..以上是关于如何在列表视图中聚焦下一个编辑文本的主要内容,如果未能解决你的问题,请参考以下文章