Java 如何在开始时禁用EditText中的编辑,然后在用户单击EditText时重新启用?

Java 如何在开始时禁用EditText中的编辑,然后在用户单击EditText时重新启用?,java,android,Java,Android,我的应用程序包含一个EditText对象,其中包含一些文本。当活动打开时,我不希望此EditText可编辑(仅查看,没有闪烁的光标和键盘弹出)。然后,为了进行编辑,用户单击EditText(这将返回闪烁的光标,并弹出键盘)。 应该有一个类似于setEditable(boolean)的函数。不推荐使用EditText中的可编辑XML属性(警告建议改用setInputType()) 有没有办法实现这一点? 最后一点:我在互联网上搜索了几个小时,这是我得到的最好结果: @Override protec

我的应用程序包含一个
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);

...
}

这不是我想要的。我必须双击才能进行编辑(第一次单击闪烁的光标时,键盘不会出现,第二次单击时,键盘会出现)

将其放置在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>


您可以确保在活动继续/开始时,EditText不会首先获得焦点,并且无论何时点击EditText,它都会获得焦点并正常工作。可能会重复我想要的“谢谢”。