如何在启动时禁用EditText中的编辑,然后在用户单击EditText时启用它?

时间:2017-11-17 16:19:49

标签: java android

我的应用包含一个EditText对象,其中包含一些文字。活动开始后,我不希望此EditText可编辑(仅查看,没有闪烁的光标,也没有弹出键盘)。然后为了编辑,用户点击EditText(这会带回闪烁的光标并弹出键盘)。 应该有像setEditable(boolean)这样的功能。不推荐使用EditText中的可编辑XML属性(警告建议使用setInputType())。

有没有办法实现这一目标?

最后的注意事项:我在互联网上搜索了几个小时,这是我最好的结果:

@Override
protected void onCreate(Bundle savedInstanceState) {
...

editor = (EditText) findViewById(R.id.noteEditText);
editor.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        editor.setInputType(
                EditorInfo.TYPE_TEXT_FLAG_CAP_SENTENCES | EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE);
    }
});

editor.setInputType(EditorInfo.TYPE_NULL);

...
}

这不符合我的意图。我必须双击以便能够编辑(首先点击闪烁的光标,键盘不会出现,在第二次点击时它们会出现)

1 个答案:

答案 0 :(得分:1)

将它放在XML的父标记中,然后就完成了。

android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"

但基本的想法是阻止儿童观点在其他任何事情之前得到关注。因此,只需将焦点放在孩子面前的父视图组。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/mainLayout"
  android:descendantFocusability="beforeDescendants"
  android:focusableInTouchMode="true" >

    <EditText
        android:id="@+id/noteEditText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:ems="10"
        android:inputType="number"
        android:maxLength="30" >
    </EditText>

</RelativeLayout>