问题描述
我想要一个EditText
,它只允许复制功能,但不允许编辑其中的文本。
我在这里使用TextInputEditText
。
方案: 我有一个窗体,默认情况下以“仅查看”模式打开。在这种模式下,所有文本都是可见的,但不可编辑。 当用户选择“编辑模式”时,表格以编辑模式显示。 在“编辑模式”下,所有文本都可以编辑。
我尝试过的事情:
我曾尝试使用setInputType(InutType.TYPE_NULL)
和setTextIsSelectable(true)
,但是它不起作用。
isFocusable
,isClickable
组合都不起作用。
setEnabled(false)
禁用了EditText
上的所有内容,我想保留复制选项。
我不想使用简单的TextView
,因为相同的文本是可编辑/不可编辑的,因此我需要使用EditText
的规定,例如 InputType >,密码切换图标,错误结构等
是否有一种方法可以仅切换EditText
的编辑功能,而不完全禁用视图?
解决方法
您可能想要editText.setKeyListener(null)
,这似乎在很大程度上阻止了键盘的弹出(如果选择了一些文本,我会得到它,但是我无法对其进行编辑)。只需记住要抓取并存储KeyListener
,以便可以将其重新设置为重新启用内容
仅供参考,您还可以添加一个覆盖#filter的InputFilter
实现,并只交出将要覆盖的字符序列-因此,您基本上将原始文本保持不变。我认为KeyListener更好