Android EditText inputType =“none”不起作用,变为“textMultiLine”

时间:2012-04-18 00:07:17

标签: android android-layout android-widget

使用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中的错误吗?

7 个答案:

答案 0 :(得分:18)

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

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

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

这适合我。

答案 1 :(得分:5)

据我所知,这是android代码中的一个错误。看这是为了参考 - How to make EditText not editable through XML in Android?

GalDude33建议 -

    android:clickable="false" 
    android:cursorVisible="false" 
    android:focusable="false" 
    android:focusableInTouchMode="false"

答案 2 :(得分:4)

设置InputType =&#34;无&#34; xml不起作用,但是如果您正在使用数据绑定,那么您可以使用绑定语法来设置输入类型。

导入类型..

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

然后绑定值

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

答案 3 :(得分:2)

使用android:editable="false"。即使它已被弃用,但当inputType没有时,它也能正常工作。

答案 4 :(得分:1)

使用此

 textView.setKeyListener(null);

答案 5 :(得分:1)

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

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

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

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

android:enabled="false"

答案 6 :(得分:0)

以下代码有效:

使用android:enabled="false"