EditText对象的Android问题

时间:2011-08-07 17:50:37

标签: android android-edittext spinner

我有一项活动,向用户显示编辑文本列表。问题是,一旦活动开始,就会立即为第一个编辑文本启动虚拟键盘。我不希望这发生,因为在这个编辑文本之前有一个微调器,并且我经常发现弹出键盘就像这样让用户忘记了之前的微调器。

以下是相关代码:

<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的活动,并自动弹出虚拟键盘。除非用户按下编辑文本,否则我不希望它这样做。

感谢您的帮助。

3 个答案:

答案 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"

看看这篇文章:Stop EditText from gaining focus at Activity startup

答案 2 :(得分:1)

这就是我的工作方式:

  1. 确保编辑文本不会集中在启动时:
    在xml中,将EditText的focusable属性设置为false:
  2. 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);
    
        ...
    }