我认为拒绝所有更改的InputFilter是一个很好的解决scheme:

editText.setFilters(new InputFilter[] { new InputFilter() { public CharSequence filter(CharSequence src, int start, int end, Spanned dst, int dstart, int dend) { return src.length() < 1 ? dst.subSequence(dstart, dend) : ""; } } });

编辑: dlazarbuild议(下面)改变return到dst.subSequence(dstart, dend)克服行为,消除单词。

editText.setFocusable(false); editText.setClickable(false);

这确保EditText控件不能被select和聚焦,所以它不能被编辑。

我只是自己试了一下,

禁用编辑文本:

.setFocusable(false);

这也setFocusableInTouchMode设置为false!

要启用编辑文字:

setFocusableInTouchMode(true);

这也将setFocusable设置为true;

最好的办法是用这一行代码:

textView.setKeyListener(null);

文档说这个方法:

设置与此TextView一起使用的关键侦听器。 这可以为空以禁止用户input。

android:editable="false" android:inputType="none"

在你的XML或

EditText mEdit = (EditText) findViewById(R.id.yourid); mEdit.setEnabled(false);

要么

EditText mEdit = (EditText) findViewById(R.id.yourid); mEdit.setKeyListener(null);

你可以试试这个:

mEditText.setFocusable(false); mEditText.setClickable(false); mEditText.setFocusableInTouchMode(false); mEditText.setLongClickable(false); mEditText.setInputType(InputType.TYPE_NULL);

这将完全禁用EditText,禁止长按,如果你不想让用户打开编辑文本选项。

在EditText类中没有看到该属性的相关方法。 但是,您可以使用其他类似的东西,例如android:focus/setFocusable(boolean)或者创build另一个TextView,其android:editable="false"并使用setVisiblilty()在可编辑视图和不可编辑视图之间切换。 如果使用View.GONE ,用户将永远不会知道有两个EditText。

如果你的感觉雄心勃勃,你可能会用EditText的onTextChanged监听器来做一些事情,比如让它和一个setText做反应。

[发表一个新的答案,因为我不能评论约瑟夫的答案。]

inputfilter工作正常,但它有一个微妙的错误:在select上键入将删除所有文本。

例如,假设你在EditText有文本"foo" 。 如果全部选中(例如,双击它)并input'a' ,则文本将消失。 这是因为InputFilter将被调用为:

filter("a", 0, 1, "foo", 0, 3);

build议的inputfilter将在这种情况下返回空string(因为src.length() < 1为false ),这解释了缺失的文本。

解决方法是简单地在过滤函数中返回dst.subSequence(dstart, dend) 。 即使删除,这也可以正常工作。

你有没有尝试setText(java.lang.CharSequence,android.widget.TextView.BufferType) ? 它被描述为:

设置此TextView要显示的文本(请参阅setText(CharSequence)),并设置它是否存储在可修改的/可扩展的缓冲区中以及是否可编辑 。

(重点是我的)

我想指出一个很好的替代解决scheme,如果你正在创build一个EditView的新实例。 您可以按照文档build议的方式覆盖方法getDefaultEditable()以返回false。 例如

EditText view = new EditText(DiscountCalculator.this) { public boolean getDefaultEditable() { return false; } };

我猜

Edittext.setEnabled(false);

通过代码

android:enabled="false"

通过xml.Also检查这个post上。

他们应该工作,你可以再次编程启用Edittext.setEnabled(true);

我发现这个场景的唯一解决scheme是创build2个布局。 一个是可编辑的,一个不是。 您可能必须根据各种条件创build2个以上的布局。 将条件存储在SharedPreferences或其他方式中,并在重新启动活动后根据条件加载相关的布局。 这是一个例子:

在onCreate()的活动中:

configuration = new Configuration(this.getSharedPreferences(Configuration.SHARED_PREFERENCES_FILE_NAME, Context.MODE_PRIVATE)); manualSettingsMode = configuration.isManualSettingsMode(); if(manualSettingsMode){ setContentView(R.layout.editableconfigurationsettings); }else { setContentView(R.layout.configurationsettings); }

活动可以根据对条件和调用函数的testing重新启动,如下所示:

private void setManualEditing(){ configuration.set_isManualSettingsMode(true); this.recreate(); } private void setAutoEditing(){ configuration.set_isManualSettingsMode(false); this.recreate(); }

希望这可以帮助。 真的有一个更好的解决scheme,但这是我一直在做的。 理想情况下,人们可以在个别领域做到这一点,而不必重新加载活动/布局。 -bobby

我认为达​​到预期效果的正确方法是:

mEditView.setText("my text", BufferType.NORMAL);

如果要在可编辑和不可编辑之间切换,可以执行以下操作:

// Switch to non-editable mEditView.setText(mEditView.getText(), BufferType.NORMAL); // Switch back to editable mEditView.setText(mEditView.getText(), BufferType.EDITABLE);

尝试这个:

mEditText.setFilters(new InputFilter[]{new InputFilter() { @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { if (XXX) { return ""; } else { return null; } } }});

android:editable=quot;falsequot;,如何在代码中复制android:editable =“false”?相关推荐

  1. 【Android NDK 开发】在 C 代码中获取 Android 系统信息 ( NDK 项目创建 | NDK 配置 | 获取 Android 系统版本号 )

    文章目录 I . 创建 NDK 项目 II . NDK 项目 相关配置 III . NDK 中获取 Android 版本号 IV . 使用 __system_property_get 可获取的参数 I ...

  2. android 动态设边距,在代码中动态设置页边距 - android

    我有一个只包含ScrollView和TableLayout的活动.在我的代码我加入tablerows,一切工作正常,除了利润 - 它不工作(没有任何反应),下面是代码:在代码中动态设置页边距 - an ...

  3. android调用python框架_在Java中从Android应用程序执行Python脚本?

    我正试图找到一种在Android中从Java代码执行Python脚本的方法.我对这个问题做了一个研究,但我发现的唯一问题是,如何在APK for android(Kivy e.t.c.)中转换pyth ...

  4. android sutdio版本号,电脑中Android studio版本号如何查看_电脑中查看Android studio版本号的步骤-系统城...

    Android studio是谷歌推出的一个Android集成开发工具,在使用的时候,经常会有新版本不断产生所以就需要查看自己的Android studio版本号来确保是否需要进行更新,很多用户不知道 ...

  5. android怎么截取接口返回html代码中的内容_如何实现文本内容折叠并显示“...查看全部”?...

    来源 | https://wintc.top/article/58多行文本超过指定行数隐藏超出部分并显示"...查看全部"是一个常遇到的需求,网上也有人实现过类似的功能,不过还是想 ...

  6. eclipse插件 android模拟器,关于eclipse:ADT插件中的android模拟器没有运行

    我正在使用EclipseADT插件进行Android开发.我遇到了一些问题,我删除了所有现有的模拟器并创建了一个新的模拟器.当我运行一个android项目并启动模拟器时,它会弹出并用一个黑屏冻结,甚至 ...

  7. android ems的作用,对话框主题活动中忽略android:minEms

    我有一个包含EditText的相对简单的布局.活动本身使用对话框主题.对话框最终很小,编辑文本甚至还不足以显示初始字符串. 我知道小对话框是一个常见问题(IIRC Dianne提到,默认情况下,该对话 ...

  8. android状态栏上显示图标大全,状态栏中的Android应用图标

    对不起,我没有足够的声誉将此添加为评论,但是您是否看过类似的问题?您可以添加所需图标的可绘制资源,并在通知上设置标志,以便允许图标保留在状态栏中. FLAG_NO_CLEAR和FLAG_ONGOING ...

  9. android qq登陆界面代码下载,【Android Demo】QQ登陆界面(一)

    之前以及实现了QQV.0.8.4115的登陆界面,现在来总结一下,并且回顾一下用到过的东西. 先上图: [原图] QQLogin_0.jpg [图一] QQLogin_1.PNG [图二] QQLog ...

最新文章

  1. DataGrid方法标注
  2. 按装oracle后 eclips提示jvm版本太低的问题
  3. Spring_01 spring容器、控制反转(IOC)、依赖注入(DI)
  4. Linux基础(存储结构和磁盘划分)
  5. jvm中方法区和常量池详解_JVM——内存区域:运行时数据区域详解
  6. sklearn.preprocessing.PolynomialFeatures的使用
  7. python下载前获取文件大小
  8. 手机三十分钟熄屏如何一直亮_怎么让手机屏幕一直亮着
  9. 【idea打包jar包+运行jar包】亲测详解
  10. Fastjson源码阅读:缺陷静态检查(上)
  11. BERT源码embedding_lookup解析
  12. python实现12306抢票,春节不用担心买不到票回家了
  13. 低效程序员的九个坏习惯
  14. 剑指offer第二版面试题46:把数字翻译成字符串(java)
  15. 环信服务器发送消息,环信服务器发送消息
  16. 入耳式无线蓝牙耳机哪款好?无线入耳蓝牙耳机推荐
  17. 无效的列类型: 1111
  18. oracle mysql认证考试流程_报考oraclemysql认证考试的流程是什么
  19. linux下编译isl,GCC编译器升级./configure报错“configure: error: Unable to find a usable ISL.”解决办法...
  20. FCRP-D---帆软官网模拟题,tomcat模块

热门文章

  1. r读取shape文件可视化_R语言读取空间数据以及ArcGIS中OLS工具回归结果可视化R语言版...
  2. 5月6阴阳师服务器维护,阴阳师6.23维护到几点?6月23日更新维护内容一览
  3. 原生js获取dom元素内容
  4. vue实现验证码输入
  5. ps原画基础教程 怎么自学原画
  6. linux 命令:uptime 详解
  7. Remote PPG 皮肤反射模型
  8. 华为鸿蒙开启王者荣耀,王者荣耀猪队友,游戏更新曝光华为新平板,直接搭载鸿蒙2.0?...
  9. 部署到服务器上的网站无法访问了,在服务器上部署网站
  10. replace into详解