19

使用 Android 1.6(4) 和 2.3.3(10) 测试。

我制作了一个简约的测试应用程序来演示这一点,它所做的只是加载 xml:

setContentView(R.layout.main); 

xml是:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello" />

<EditText
    android:id="@+id/editText1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:inputType="none"
    android:ems="10" >

</EditText>

问题:

inputType="none"在执行过程中设置实际输入类型变为 时textMultiLine(0x00020001),我已经用调试器检查了它。

另一方面,如果我使用inputType="text"它按预期工作。

这是Android中的错误吗?

4

7 回答 7

32

我遇到了同样的问题:通过 xml 定义输入类型不起作用。

然后,为了修复它,我以编程方式设置输入类型:

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState)
    {
    ...
    editText1= (EditText) super.getActivity().findViewById(R.id.editText1);
    editText1.setInputType(InputType.TYPE_NULL);    // none...
    ...
    }

这对我行得通。

于 2015-08-10T12:35:26.180 回答
13

设置 InputType="none" xml 不起作用,但如果您使用数据绑定,那么您可以使用绑定语法来设置输入类型。

导入类型..

<data> <import type="android.text.InputType" /> </data>

然后绑定值

<EditText android:id="@+id/edit_text" android:inputType="@{InputType.TYPE_NULL}" />

于 2017-07-06T13:03:43.443 回答
10

使用android:editable="false". 即使它已被弃用,它在 inputType 不支持时仍然有效。

于 2014-02-25T14:55:16.410 回答
10

据我所知,这是android代码中的一个错误。请参阅this for refrence - How to make EditText not editable through XML in Android?

GalDude33 建议——

    android:clickable="false" 
    android:cursorVisible="false" 
    android:focusable="false" 
    android:focusableInTouchMode="false"
于 2012-04-18T02:12:03.513 回答
4

用这个

 textView.setKeyListener(null);
于 2014-03-10T07:29:04.407 回答
2

像这样设置 .xml 是可行的,但是,我不得不添加另一行,因为光标是可见的。

android:focusable="false"
android:cursorVisible="false" 

奇怪的是,即使在 2 年后,这个“错误”仍然存在,而且折旧的方法比建议的方法效果更好。

使用它也可以,但是在这种情况下您必须编辑背景颜色,除非您希望颜色不同。

android:enabled="false"
于 2021-07-12T10:53:08.013 回答
0

以下代码有效:

利用android:enabled="false"

于 2021-06-04T14:33:35.730 回答