android中控制EditText不可编辑的问题
2012-03-31 15:25
357 查看
本来这个也不算个大问题,但我开发中确实遇到了,特开此贴,希望能帮到一些android新手。
可能有人会说,设置EditText不可编辑那还不简单,直接设置
Xml代码
android:editable="false"
就可以了,如果你一直是这么做的,那么你就不用看下去了,在android2.2中直接设置 android:editable="false"是不起作用的,(我在模拟器和真机环境中测试都不起作用) 在android2.2中 editable是depreceated的,大家可以看看api文档http://developer.android.com/reference/android/R.attr.html#editable
。
那么我们是不是就不可以设置EditText的编辑状态呢,当然不是,我们可以设置
Xml代码
android:focusable="false"
这是什么意思呢,很简单,不让它获得输入焦点(不要告诉我你不知道什么是焦点),既然得不到焦点,当让就无法输入了,我在http://stackoverflow.com/questions/4824676/making-not-editable-edittext-component
上也到的这样的解决方式。
那么为什么要这么做呢,为什么不要 android:editable了呢,这是一个用户体验的问题。android是一个移动平台,大多数是没有键盘的,都是屏幕软键盘,如果你设置EditText为不可编辑,那么就不应该打开软键盘,而不是打开软键盘了又无法输入。
似乎到了这里就没有说的了,请你不要着急,这样设置后有一个问题,无法选中EditText的内容,因为它无法获得焦点 ,这个问题我也不知道怎么解决,希望大大们能给解决下。
如何在java代码中控制EditText不可编辑呢,因为EditText没有setEditable这样的方法,这个问题坛子里已经有很多高手解决了,使用
InputFilter
具体如下:
Java代码
你的EditText.setFilters(new InputFilter[] { new InputFilter() { public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { return source.length() < 1 ? dest.subSequence(dstart, dend) : ""; } } });
(申明下,这个我是在坛子中看到的,本人测试有效) 这样做就可以在java代码中动态设置EditText的编辑状态了,但这个无法解决用户体验的问题,软键盘依然会打开,但无法输入,但可以选择内容。
可能有人会说,设置EditText不可编辑那还不简单,直接设置
Xml代码
android:editable="false"
android:editable="false"
就可以了,如果你一直是这么做的,那么你就不用看下去了,在android2.2中直接设置 android:editable="false"是不起作用的,(我在模拟器和真机环境中测试都不起作用) 在android2.2中 editable是depreceated的,大家可以看看api文档http://developer.android.com/reference/android/R.attr.html#editable
。
那么我们是不是就不可以设置EditText的编辑状态呢,当然不是,我们可以设置
Xml代码
android:focusable="false"
android:focusable="false"
这是什么意思呢,很简单,不让它获得输入焦点(不要告诉我你不知道什么是焦点),既然得不到焦点,当让就无法输入了,我在http://stackoverflow.com/questions/4824676/making-not-editable-edittext-component
上也到的这样的解决方式。
那么为什么要这么做呢,为什么不要 android:editable了呢,这是一个用户体验的问题。android是一个移动平台,大多数是没有键盘的,都是屏幕软键盘,如果你设置EditText为不可编辑,那么就不应该打开软键盘,而不是打开软键盘了又无法输入。
似乎到了这里就没有说的了,请你不要着急,这样设置后有一个问题,无法选中EditText的内容,因为它无法获得焦点 ,这个问题我也不知道怎么解决,希望大大们能给解决下。
如何在java代码中控制EditText不可编辑呢,因为EditText没有setEditable这样的方法,这个问题坛子里已经有很多高手解决了,使用
InputFilter
具体如下:
Java代码
你的EditText.setFilters(new InputFilter[] { new InputFilter() { public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { return source.length() < 1 ? dest.subSequence(dstart, dend) : ""; } } });
你的EditText.setFilters(new InputFilter[] { new InputFilter() { public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { return source.length() < 1 ? dest.subSequence(dstart, dend) : ""; } } });
(申明下,这个我是在坛子中看到的,本人测试有效) 这样做就可以在java代码中动态设置EditText的编辑状态了,但这个无法解决用户体验的问题,软键盘依然会打开,但无法输入,但可以选择内容。
相关文章推荐
- android中控制EditText不可编辑的问题
- Android中EditText设置editable属性为不可编辑的问题
- android2.2中EditText不可编辑的问题
- [android]How to implement an not editable scrollable EditText?(如何实现一个不可编辑的带滚动条的EditText?) .
- Android EditText设置可编辑和不可编辑状态
- Android 设置EditText不可编辑
- Android 的EditText实现不可编辑
- Android中EditText实现不可编辑解决办法
- Android用代码实现EditText不可编辑
- Android 实现EditText不可编辑
- android中将EditText改成不可编辑的状态
- android中EditText编辑状态切换问题
- Android的EditText设置可编辑与不可编辑怎样切换
- android_EditText设置可以编辑和不可编辑状态
- Android EditText设置可以编辑和不可编辑状态
- android中ListView中的EditText不可编辑
- Android设置EditText不可编辑
- Android中EditText实现不可编辑解决办法
- Android的EditText不可编辑状态下的长按复制
- Android 实现Edittext 不可编辑形态