我在Android中有一个活动,包含两个元素:

编辑文本列表视图

当“活动”启动时,EditText立即具有输入焦点(闪烁光标)。我不希望任何控件在启动时具有输入焦点。我尝试了:

EditText.setSelected(false);
EditText.setFocusable(false);

没有运气。如何说服EditText在“活动”启动时不选择自己?


当前回答

已经提供了很多有效的答案,但我认为我们可以使用以下简单方法做得更好

//set focus to input field
private fun focusHere() {
    findViewById<TextView>(R.id.input).requestFocus()
}

使用任何其他视图id来设置该视图的焦点,以代替R.id.input中的输入。

其他回答

try

edit.setInputType(InputType.TYPE_NULL);

edit.setEnabled(false);

请尝试clearFocus()而不是setSelected(false)。Android中的每个视图都具有可聚焦性和可选择性,我认为您只需要清除焦点。

在onCreate方法中添加以下内容:

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

我做的最简单的事情是在onCreate中设置另一个视图的焦点:

myView.setFocusableInTouchMode(true);
myView.requestFocus();

这阻止了软键盘的出现,并且EditText中没有光标闪烁。

对我来说,在所有设备上工作的是:

    <!-- fake first focusable view, to allow stealing the focus to itself when clearing the focus from others -->

    <View
    android:layout_width="0px"
    android:layout_height="0px"
    android:focusable="true"
    android:focusableInTouchMode="true" />

只需将此作为一个视图放在有问题的聚焦视图之前,就可以了。