职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 707|回复: 0

android2.2中EditText不可编辑的问题

[复制链接]
broken 发表于 2011-8-11 12:58 | 显示全部楼层 |阅读模式
本来这个也不算个大问题,但我开发中确实遇到了,特开此贴,希望能帮到一些android新手。
可能有人会说,设置EditText不可编辑那还不简单,直接设置
Xml代码  
android:editable="false"  

android:editable="false" 就可以了,如果你一直是这么做的,那么你就不用看下去了,在android2.2中直接设置  android:editable="false"是不起作用的,(我在模拟器和真机环境中测试都不起作用) 在android2.2中 editable是depreceated的,大家可以看看api文档http://developer.android.com/ref ... .attr.html#editable

     那么我们是不是就不可以设置EditText的编辑状态呢,当然不是,我们可以设置

Xml代码  
android:focusable="false"  

android:focusable="false"   这是什么意思呢,很简单,不让它获得输入焦点(不要告诉我你不知道什么是焦点),既然得不到焦点,当让就无法输入了,我在http://stackoverflow.com/questio ... -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的编辑状态了,但这个无法解决用户体验的问题,软键盘依然会打开,但无法输入,但可以选择内容。

您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-2 06:06 , Processed in 0.148648 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表