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