问题?

android EditText控件如何禁止往里面输入内容?


修改版解决方法:

EditText editText =  (EditText) findViewById(R.id.editText1);

editText.setKeyListener(null);


看到这个问题大家可能有点奇怪了,EditText的功能不就是往上面写入内容吗?

再者,如果真要禁止输入文本,在布局文件中添加 android:focusable="false",

或者在代码中使用editText.setFocusable(false),不就Ok了?

项目需求是这样的,如果EditText上面已经被setText()内容,则需要禁止输入,防止它被修改。

如果没有显示内容,则将EditText设置为可输入状态。


经过测试验证:setFocusable方法的效果只有第一次使用时有效,也就是说若在布局文件里面设置:

android:focusable="false",即使你在代码中设置此控件属性:editText.setFocusable(true);也不能对它进行编辑。

setFocusable方案不可行。经过摸索得出可行方案。

利用 editText.setInputType(InputType.TYPE_NULL);来禁止手机软键盘。

editText.setInputType(InputType.TYPE_CLASS_TEXT);来开启软键盘。

应用程序默认为开启状态。

特别注意:这种方法也只能禁止软键盘,若手机自带硬键盘,此方案失效。


附测试demo:

public class EditTextTest extends Activity{/** test EditText forbid input function demo  */EditText editText;boolean flag = true;public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);editText = (EditText) findViewById(R.id.editText1);Button btn = (Button) findViewById(R.id.button1);btn.setOnClickListener(new OnClickListener(){public void onClick(View v){if (flag==true){System.out.println("开启软键盘"); editText.setInputType(InputType.TYPE_CLASS_TEXT);flag = false;}else{System.out.println("禁止软键盘"); editText.setInputType(InputType.TYPE_NULL);flag = true;}}});}}

小结:问题在这里,总会有解决它的方法。








更多相关文章

  1. Android(安卓)之EditText自动弹出/不弹出输入法
  2. 转 Android监听键盘弹出收起
  3. EditText的光标选择(android.text.Selection)&输入指定字符
  4. android:windowSoftInputMode属性使用
  5. Android开发常用属性
  6. android横竖屏切换
  7. 关于EditText的一点深入的了解
  8. android实现emoji输入
  9. Android核心分析(14)------ Android(安卓)GWES之输入系统

随机推荐

  1. android 开发-数据存储之文件存储
  2. 浅谈android的selector背景选择器
  3. Android(安卓)Studio简单设置
  4. Android中Touch事件的处理
  5. Android图形系统(八)-app与SurfaceFlinger
  6. android简介
  7. Android(安卓)EditView属性详细介绍
  8. Android资源文件 - 使用资源存储字符串
  9. Android(安卓)NDK 开发教程一:安装NDK
  10. 基本架构