android中控制EditText不可编辑的问题

转载 2012年03月31日 15:25:50

本来这个也不算个大问题,但我开发中确实遇到了,特开此贴,希望能帮到一些android新手。

可能有人会说,设置EditText不可编辑那还不简单,直接设置

Xml代码 复制代码 收藏代码
  1. 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代码 复制代码 收藏代码
  1. android:focusable="false"  

   这是什么意思呢,很简单,不让它获得输入焦点(不要告诉我你不知道什么是焦点),既然得不到焦点,当让就无法输入了,我在http://stackoverflow.com/questions/4824676/making-not-editable-edittext-component 上也到的这样的解决方式。

   那么为什么要这么做呢,为什么不要   android:editable了呢,这是一个用户体验的问题。android是一个移动平台,大多数是没有键盘的,都是屏幕软键盘,如果你设置EditText为不可编辑,那么就不应该打开软键盘,而不是打开软键盘了又无法输入。

 

   似乎到了这里就没有说的了,请你不要着急,这样设置后有一个问题,无法选中EditText的内容,因为它无法获得焦点 ,这个问题我也不知道怎么解决,希望大大们能给解决下。

 

    如何在java代码中控制EditText不可编辑呢,因为EditText没有setEditable这样的方法,这个问题坛子里已经有很多高手解决了,使用 InputFilter

具体如下:

 

Java代码 复制代码 收藏代码
  1. 你的EditText.setFilters(new InputFilter[] {   
  2.             new InputFilter() {   
  3.                 public CharSequence filter(CharSequence source, int start,   
  4.                         int end, Spanned dest, int dstart, int dend) {   
  5.                     return source.length() < 1 ? dest.subSequence(dstart, dend) : "";   
  6.                 }   
  7.             }   
  8.         });  

  (申明下,这个我是在坛子中看到的,本人测试有效) 这样做就可以在java代码中动态设置EditText的编辑状态了,但这个无法解决用户体验的问题,软键盘依然会打开,但无法输入,但可以选择内容。

EditText设置可以编辑和不可编辑状态

1、首先想到在xml中设置android:editable="false",但是如果想在代码中动态设置可编辑状态,没有找到对应的函数 2、然后尝试使用editText.setFocusable(fa...
  • luliyuan
  • luliyuan
  • 2012年10月15日 09:08
  • 144163

Android开发之旅一PopupWindow写的一个基类和PopupWindow中EditText输入法的问题

呵呵,几乎看遍了,才找到解决的方法,看看下面的代码 import android.app.Activity; import android.graphics.BitmapFactory;...
  • qqqGL
  • qqqGL
  • 2014年02月27日 19:14
  • 1826

Edittext不可编辑可点击 & 解决Edittext第二次点击才有效

问题1:Edittext不可编辑可点击 1、Edittext在新的api里已经把editable功能标记deprecated。 2、但是如果设置enabled为false的话,点击事件也无效了。 3、...
  • kevinlinkai
  • kevinlinkai
  • 2016年07月14日 17:51
  • 5897

Android中EditText设置editable属性为不可编辑的问题

EditText的editable属性用于设置是否可被编辑,但目前已被deprecate,相关文档说用inputType属性替代,但实际上似乎又无效果,可能是个bug。 只能寻求其他方式实现Edit...
  • tsocpp
  • tsocpp
  • 2015年06月11日 14:25
  • 7050

EditText设置可以编辑和不可编辑状态

android2.2中EditText不可编辑的问题 本来这个也不算个大问题,但我开发中确实遇到了,特开此贴,希望能帮到一些android新手。 可能有人会说,设置EditText不可编辑那还不简...
  • u011630575
  • u011630575
  • 2016年01月11日 17:45
  • 14219

EditText,这篇就够了

EditText,看这里就够了,哈哈!
  • ThanksForAndroid
  • ThanksForAndroid
  • 2017年04月27日 16:44
  • 232

解决:android:editable is deprecated: Use an <EditText> to make it editable

问题:android:editable is deprecated: Use an to make it editable 意思:Android的:编辑是反对:使用 EditText >对其...
  • zjy_hll
  • zjy_hll
  • 2014年11月18日 12:50
  • 627

android:editable和android:enabled的区别

Editext: android:editable设置是否可编辑。如果它的值为:“true” 怎可以编辑,若“false”怎不可编辑。 android:enabled 设置是否可用,如果它的值为:"t...
  • dlwh_123
  • dlwh_123
  • 2014年04月15日 15:38
  • 1088

Android Editable

简单记一下,以前没怎么用过。 EditText View的getText直接返回的就是 Editable 而 TextView则是getEditableText才返回 Editable。 还有就...
  • fyfcauc
  • fyfcauc
  • 2015年02月12日 13:53
  • 3887

android edittext不可编辑

两种选择: 第一个 不可编辑但是会弹出输入法 android:editable="false"    第二个 不可编辑同时不会弹出输入法 android:focusable=...
  • xjbclz
  • xjbclz
  • 2016年08月09日 22:58
  • 11530
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android中控制EditText不可编辑的问题
举报原因:
原因补充:

(最多只允许输入30个字)