我有一项活动,向用户显示编辑文本列表。问题是,一旦活动开始,就会立即为第一个编辑文本启动虚拟键盘。我不希望这发生,因为在这个编辑文本之前有一个微调器,并且我经常发现弹出键盘就像这样让用户忘记了之前的微调器。
以下是相关代码:
<Spinner
android:id="@+id/event_location"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30px"
android:prompt="@string/location_prompt" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Event Name: " />
<EditText
android:id="@+id/event_name"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Activity Type: " />
<Spinner
android:id="@+id/event_type"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Address: " />
<EditText
android:id="@+id/event_address"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
摘要:启动EditText的活动,并自动弹出虚拟键盘。除非用户按下编辑文本,否则我不希望它这样做。
感谢您的帮助。
答案 0 :(得分:2)
EditText会自动设置为焦点,因此您需要放置android:focusable="false"
或editText.setFocusable(false)
以防止在微调器可见时聚焦EditText。您也可以尝试editText.setSelected(false)
。
答案 1 :(得分:1)
尝试将微调器XML更改为:
<Spinner
android:layout_marginTop="30px"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:id="@+id/event_location"
android:prompt="@string/location_prompt">
<requestFocus />
</Spinner>
还尝试为每个EditText执行:
android:focusable="false"
android:focusableInTouchMode="false"
答案 2 :(得分:1)
这就是我的工作方式:
android:focusable="false"
2。为了使 EditText 在启动后再次可聚焦:
在oncreate()
方法之后,在所需活动的setContent()
方法中的代码中设置focusable属性:
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main_view);
....
EditText et = (EditText) findViewById(R.id.et_notes);
et.setFocusable(true);
et.setFocusableInTouchMode(true);
...
}