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,它都会获得焦点并正常工作。可能会重复我想要的“谢谢”。