我的应用包含一个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);
...
}
这不符合我的意图。我必须双击以便能够编辑(首先点击闪烁的光标,键盘不会出现,在第二次点击时它们会出现)
答案 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>