android:editable=quot;falsequot;,如何在代码中复制android:editable =“false”?
我认为拒绝所有更改的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”?相关推荐
- 【Android NDK 开发】在 C 代码中获取 Android 系统信息 ( NDK 项目创建 | NDK 配置 | 获取 Android 系统版本号 )
文章目录 I . 创建 NDK 项目 II . NDK 项目 相关配置 III . NDK 中获取 Android 版本号 IV . 使用 __system_property_get 可获取的参数 I ...
- android 动态设边距,在代码中动态设置页边距 - android
我有一个只包含ScrollView和TableLayout的活动.在我的代码我加入tablerows,一切工作正常,除了利润 - 它不工作(没有任何反应),下面是代码:在代码中动态设置页边距 - an ...
- android调用python框架_在Java中从Android应用程序执行Python脚本?
我正试图找到一种在Android中从Java代码执行Python脚本的方法.我对这个问题做了一个研究,但我发现的唯一问题是,如何在APK for android(Kivy e.t.c.)中转换pyth ...
- android sutdio版本号,电脑中Android studio版本号如何查看_电脑中查看Android studio版本号的步骤-系统城...
Android studio是谷歌推出的一个Android集成开发工具,在使用的时候,经常会有新版本不断产生所以就需要查看自己的Android studio版本号来确保是否需要进行更新,很多用户不知道 ...
- android怎么截取接口返回html代码中的内容_如何实现文本内容折叠并显示“...查看全部”?...
来源 | https://wintc.top/article/58多行文本超过指定行数隐藏超出部分并显示"...查看全部"是一个常遇到的需求,网上也有人实现过类似的功能,不过还是想 ...
- eclipse插件 android模拟器,关于eclipse:ADT插件中的android模拟器没有运行
我正在使用EclipseADT插件进行Android开发.我遇到了一些问题,我删除了所有现有的模拟器并创建了一个新的模拟器.当我运行一个android项目并启动模拟器时,它会弹出并用一个黑屏冻结,甚至 ...
- android ems的作用,对话框主题活动中忽略android:minEms
我有一个包含EditText的相对简单的布局.活动本身使用对话框主题.对话框最终很小,编辑文本甚至还不足以显示初始字符串. 我知道小对话框是一个常见问题(IIRC Dianne提到,默认情况下,该对话 ...
- android状态栏上显示图标大全,状态栏中的Android应用图标
对不起,我没有足够的声誉将此添加为评论,但是您是否看过类似的问题?您可以添加所需图标的可绘制资源,并在通知上设置标志,以便允许图标保留在状态栏中. FLAG_NO_CLEAR和FLAG_ONGOING ...
- android qq登陆界面代码下载,【Android Demo】QQ登陆界面(一)
之前以及实现了QQV.0.8.4115的登陆界面,现在来总结一下,并且回顾一下用到过的东西. 先上图: [原图] QQLogin_0.jpg [图一] QQLogin_1.PNG [图二] QQLog ...
最新文章
- DataGrid方法标注
- 按装oracle后 eclips提示jvm版本太低的问题
- Spring_01 spring容器、控制反转(IOC)、依赖注入(DI)
- Linux基础(存储结构和磁盘划分)
- jvm中方法区和常量池详解_JVM——内存区域:运行时数据区域详解
- sklearn.preprocessing.PolynomialFeatures的使用
- python下载前获取文件大小
- 手机三十分钟熄屏如何一直亮_怎么让手机屏幕一直亮着
- 【idea打包jar包+运行jar包】亲测详解
- Fastjson源码阅读:缺陷静态检查(上)
- BERT源码embedding_lookup解析
- python实现12306抢票,春节不用担心买不到票回家了
- 低效程序员的九个坏习惯
- 剑指offer第二版面试题46:把数字翻译成字符串(java)
- 环信服务器发送消息,环信服务器发送消息
- 入耳式无线蓝牙耳机哪款好?无线入耳蓝牙耳机推荐
- 无效的列类型: 1111
- oracle mysql认证考试流程_报考oraclemysql认证考试的流程是什么
- linux下编译isl,GCC编译器升级./configure报错“configure: error: Unable to find a usable ISL.”解决办法...
- FCRP-D---帆软官网模拟题,tomcat模块
热门文章
- r读取shape文件可视化_R语言读取空间数据以及ArcGIS中OLS工具回归结果可视化R语言版...
- 5月6阴阳师服务器维护,阴阳师6.23维护到几点?6月23日更新维护内容一览
- 原生js获取dom元素内容
- vue实现验证码输入
- ps原画基础教程 怎么自学原画
- linux 命令:uptime 详解
- Remote PPG 皮肤反射模型
- 华为鸿蒙开启王者荣耀,王者荣耀猪队友,游戏更新曝光华为新平板,直接搭载鸿蒙2.0?...
- 部署到服务器上的网站无法访问了,在服务器上部署网站
- replace into详解