Android 使所有编辑文本不能一起编辑
我搜索并找到了使单个EditText不可编辑的方法,例如Android 使所有编辑文本不能一起编辑,android,android-edittext,Android,Android Edittext,我搜索并找到了使单个EditText不可编辑的方法,例如 edittext.setKeyListener(空) 将EditText设置为android:focusable=“false” 但是,这些方法的问题是,我需要在布局中获取对每个EditText视图的引用,并分别实现上述语句。是否有一种方法可以使布局中的所有EditText视图都不可编辑 应用程序是这样的:我有一个“显示和编辑”活动,其中向用户显示数据库中的当前记录。此时,显示的文本应为只读。如果需要,他单击编辑按钮,然后EditText
edittext.setKeyListener(空)代码>
EditText
设置为android:focusable=“false”
EditText
视图的引用,并分别实现上述语句。是否有一种方法可以使布局中的所有EditText视图都不可编辑
应用程序是这样的:我有一个“显示和编辑”活动,其中向用户显示数据库中的当前记录。此时,显示的文本应为只读。如果需要,他单击编辑按钮,然后EditText视图将变为可编辑
我尝试在rootViewGroup
中设置android:inputType=“none”
和android:focusable=“false”
,但没有成功。有出路吗?来自:
在查找要聚焦的视图时,定义视图组及其子体之间的关系
将此应用于那些EditText
s的父级:
android:descendantFocusability="blocksDescendants"
这将导致
视图组
阻止其子体接收焦点。如果要以编程方式实现这一点
public void setupUI(View view, boolean editable) {
if (view instanceof EditText) {
((EditText)view).setFocusable(editable);
//Here you can add any other code that needed to be done while changing focus of a particular edit text
return;
}
//If a layout container, iterate over children and seed recursion.
if (view instanceof ViewGroup) {
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
View innerView = ((ViewGroup) view).getChildAt(i);
setupUI(innerView, editable);
}
}
}
public void setupUI(视图,布尔可编辑){
如果(查看EditText的实例){
((编辑文本)视图)。可设置焦点(可编辑);
//在这里,您可以添加在更改特定编辑文本的焦点时需要执行的任何其他代码
返回;
}
//如果是布局容器,则在子对象上迭代并为递归设定种子。
if(视图组的视图实例){
对于(int i=0;i<((视图组)视图)。getChildCount();i++){
视图内部视图=((视图组)视图);
setupUI(内部视图,可编辑);
}
}
}
在片段或活动的父视图中提供此方法
单击“编辑”按钮时,将父视图和true(即可编辑)传递给该方法,编辑后将传递父视图和false(即不可编辑)。此操作有效,thanx!尽管如此,单击时EditText视图仍亮起。如果有办法禁用clickable,那就太好了。找不到类似的属性。将
android:focusable=“false”
应用于EditText
。但我必须分别对每个EditText执行此操作,这就是问题所在。您是否已将android:focusable=“false”
应用于根布局?这也不起作用,但是你的答案是有效的,即android:DegenantFocusability=“BlocksDescents”,只是它对clicksThanx做出视觉响应的一个小问题,但最后一次调用setupUI时也会包含布尔参数editable right?我删除了函数声明中的布尔可编辑参数,它工作正常。塔克斯。但单击时视图会亮起。我想我可以包括一个命令,使视图也不可点击。惊人的代码位!!特别是递归部分。优雅而简洁。Thanx!!