我有一些带有一些EditText的多行ListView。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<EditText
android:id="@+id/edit_tail"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="number" />
<EditText
android:id="@+id/edit_cost"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="number" />
<EditText
android:id="@+id/edit_rest"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="number" />
</LinearLayout>
在EditText中,输入“Enter”键后,系统按以下方式建立焦点:
[EditText] [EditText] [EditText]
↓ ↓ ↓
[EditText] [EditText] [EditText]
↓ ↓ ↓
[EditText] [EditText] [EditText]
↓ ↓ ↓
... ... ...
但我想:
[EditText] -> [EditText] -> [EditText] ->
-> [EditText] -> [EditText] -> [EditText] ->
-> [EditText] -> [EditText] -> [EditText]
如何解决这个问题?
答案 0 :(得分:1)
一种方法是手动将ime标题设置为“Next”(可以在xml或Java中完成),然后手动覆盖该活动的onClick侦听器并侦听按下的“下一个”键。然后你可以在EditText上调用你想要将焦点切换到的requestFocus()
。老实说虽然这会很麻烦,但我知道它会起作用。希望有更好的方法。
答案 1 :(得分:1)
我遇到了在EditTexts中水平移动焦点的问题。在我的例子中,我只有几个EditTexts,所以我在每个EditTexts xml中添加了android:imeOptions="actionNext"
,然后将OnEditorActionListener添加到每个EditText。代码示例:
_heightEdit.setOnEditorActionLister(getGotoNextListener(_weightEdit));
private OnEditorActionListener getGotoNextListener(final EditText next) {
return new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_NEXT) {
next.requestFocus();
return true;
}
return false;
}
};
}
这是解决这个问题的合理解决方案。
答案 2 :(得分:0)
要为ListView中的EditText提供从左到右和从上到下的聚焦,您可以使用以下XML选项:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<EditText
android:id="@+id/edit_1"
android:nextFocusRight="@+id/edit_2"
android:imeOptions="actionNext"
/>
<EditText
android:id="@+id/edit_2"
android:nextFocusRight="@+id/edit_3"
android:imeOptions="actionNext"
/>
<EditText
android:id="@+id/edit_3"
android:nextFocusRight="@+id/edit_4"
android:imeOptions="actionNext"
/>
<EditText
android:id="@+id/edit_4"
android:nextFocusDown="@+id/edit_1"
android:imeOptions="actionNext"
/>
</LinearLayout>
它对我有用,希望对你有帮助。