【发布时间】:2019-03-20 10:50:37
【问题描述】:
我的屏幕上有几个 EditText,它们都是按以下方式构建的。
XML:
<android.support.design.widget.TextInputEditText
android:id="@+id/textInputEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/name"
app:fontFamily="@font/karla"
android:inputType="textMultiLine|textCapCharacters"
android:maxLength="12"
android:textColor="#5C7264"
/>
代码:
private void addItemsToLinearLayout(int numItems) {
LayoutInflater inflater = LayoutInflater.from(mContext);
for (int i = 0; i < numItems; i++) {
View childView = inflater.inflate(R.layout.item_linearlayout, null);
linearlayoutPlayersNames.addView(childView);
ImageView deleteRowIcon = childView.findViewById(R.id.deleteRowIcon);
deleteRowIcon.setOnClickListener(this);
TextView myTV = childView.findViewById(R.id.txtTitle);
myTV.setText(String.format(getString(R.string.player), linearlayoutPlayersNames.indexOfChild(childView) + 1));
EditText editText = childView.findViewById(R.id.textInputEditText);
editText.setImeOptions(EditorInfo.IME_ACTION_NEXT);
editText.setRawInputType(InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS);
}
}
当我单击软键盘的下一个按钮时,它会按预期移动到下一个 EditText,但前提是下一个 EditText 在屏幕上可见。当下一个 EditText 在屏幕上不可见时,下一个操作不起作用,最重要的是,它会将下一个操作按钮更改为回车操作按钮,如以下视频所示:https://imgur.com/a/snAbdmU
我打算做的是单击下一个按钮并将可见性移动到下一个 EditText。
更新:你们中的一些人告诉我使用android:nextFocusDown 或以编程方式使用editText.setNextFocusForwardId(editTextSecond.getId()); 执行此操作,但我不能,因为我使用循环来创建EditTexts,如图所示现在在代码中。
【问题讨论】:
-
你在你的 xml 中试过 android:imeOptions="actionNext" 吗?
-
@AntonisRadz 如您所见,它是以编程方式设置的。当下一个 EditText 在屏幕上不可见时,就会出现不当行为。
-
没有其他解决方案@AbidKhan 吗?我根据想要玩的玩家数量以编程方式生成 EditTexts,所以这对我来说并不容易。
-
使用
edittext.setSingleLine(true);或edittext.setMaxLines(1);检查 -
然后在我的答案中检查它。
标签: android android-edittext android-softkeyboard android-inputtype