`
moyue
  • 浏览: 25722 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

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

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

android:editable="false"

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

 

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

 

android:focusable="false"

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

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

 

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

 

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

具体如下:

 

你的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的编辑状态了,但这个无法解决用户体验的问题,软键盘依然会打开,但无法输入,但可以选择内容。

分享到:
评论
1 楼 androidzd 2012-03-27  
这个问题我在2.3.3上面也遇到过  
meditText.setEnabled(false);
meditText.setFocusable(false); //editText不获取焦点
这样设置软键盘也不用弹出来了 大家可以参考下

相关推荐

    Android2.2 API中文文档 —EditText

    在Android开发中,`EditText`是不可或缺的UI组件,它允许用户输入文本并显示在屏幕上。在Android2.2版本的API中,`EditText`扮演着重要的角色,提供了多种功能和自定义选项,以适应不同应用的需求。下面我们将深入...

    android2.2中文文档系类

    本文档旨在详细介绍Android 2.2版本中`TextView`控件的相关属性和方法,帮助开发者更好地理解和掌握`TextView`的使用技巧。对于Android应用开发而言,`TextView`是极其重要的基础控件之一,用于展示文本信息。 ####...

    Android2.2—API中文文档

    本文将深入探讨Android2.2版本的API,主要关注TextView、EditText、AccessibilityService等关键组件。 首先,我们来关注TextView。TextView是Android UI设计中最基本的组件之一,用于展示单行或多行的文本。它的...

    Android2.2—TextView API中文文档.doc

    TextView是Android开发中不可或缺的组件,它是用于显示单行或多行文本的视图。在Android 2.2中,TextView提供了丰富的API,允许开发者对文本的展示进行精细的控制。以下是对TextView主要特性和API的详细解析。 1. *...

    Android2.2 API中文文档——View

    本文档将详细介绍Android2.2版本中的`View`类及其相关属性,帮助开发者更好地理解和使用这些重要的UI组件。 #### 已知直接子类 `View`类有许多直接子类,包括但不限于: - **AnalogClock**:模拟时钟视图。 - **...

    Android2.2_API_中文文档

    ### Android2.2_API中文文档知识点详解 #### 一、TextView的API中文文档概述 **1.1 结构** 在Android开发中,`TextView`是一个非常基础且重要的UI组件,用于展示文本信息。其继承自`View`,进一步扩展了`View`的...

    Android_2.2_API_中文文档

    - **android:editable**:确定文本是否可编辑,常用于`EditText`中。 - **android:ellipsize**:当文本过长时,定义其裁剪方式。可选择在开始、结束或中间插入省略号,或采用跑马灯滚动显示。 - **android:...

    Android API中文文档

    它支持文本编辑、验证、格式化等功能,是用户交互中必不可少的部分。开发者可以学习如何添加输入提示、限制输入类型和格式,以及获取用户输入的数据。 最后,"Android2.2 r1 API中文文档——RadioButton(完成)....

    Android源代码之计算器(Android Studio2.2开发的)

    - `TextView`则用于显示计算结果,通常不可编辑。 5. **SharedPreferences**(可选): 如果计算器需要记住历史记录或者用户设置,可以使用`SharedPreferences`来持久化数据。 6. **布局管理器**: 布局文件...

    android-2.2各种界面控件的综合应用

    在Android 2.2中,还有其他类型的布局,例如: 3. **帧布局(FrameLayout)**:帧布局会将子视图叠加在一起,第一个添加的视图位于底层,后续的视图依次覆盖在上面。 4. **表格布局(TableLayout)**:这种布局以...

    高仿基于android2.2(Froyo)的Contacts

    对于大型联系人列表,性能优化是必不可少的。这可能涉及到数据库查询优化、内存管理、列表滚动流畅性提升等技术。 9. 兼容性和适配: 虽然本例基于Android 2.2,但考虑到Android的碎片化问题,开发者应考虑应用在...

    Android史上最全的API合集

    《Android史上最全API合集》是一份珍贵的资源,涵盖了Android和Java的广泛API文档,是开发者们不可或缺的参考资料。这个合集包含了从Android 2.2到2.3的不同版本API,以及多个中文API的翻译版本,确保了对各个阶段...

    EditTextTest

    3. **文本编辑器插入图片**:在EditText中插入图片通常需要自定义一个可编辑的视图,因为EditText本身并不支持图片插入。开发者可能创建了一个扩展自EditText的类,或者利用SpannableStringBuilder和ImageSpan来实现...

    Android API(中文)

    在Android2.2的API中文文档中,TextView的相关内容包括以下几点: 1. **结构**:TextView是View的直接子类,同时也是许多其他类(如Button, EditText等)的基类。它支持多种子类,比如用于显示时间的Chronometer或...

    Listview中Editext数据保存

    在Android开发中,ListView是一种常用的组件,用于展示可滚动的多行数据列表。在ListView中嵌入EditText,可以实现用户编辑列表项的功能,比如在联系人应用中添加或修改姓名。然而,处理ListView中的EditText数据...

    安卓计算机软件

    此外,项目还需要一个AndroidManifest.xml文件,这是每个Android应用必不可少的部分,它包含了应用的元数据,如应用的名称、权限、启动Activity以及所需的最低Android版本等信息。 为了使应用能够在实际设备或...

Global site tag (gtag.js) - Google Analytics