Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使所有编辑文本不能一起编辑_Android_Android Edittext - Fatal编程技术网

Android 使所有编辑文本不能一起编辑

Android 使所有编辑文本不能一起编辑,android,android-edittext,Android,Android Edittext,我搜索并找到了使单个EditText不可编辑的方法,例如 edittext.setKeyListener(空) 将EditText设置为android:focusable=“false” 但是,这些方法的问题是,我需要在布局中获取对每个EditText视图的引用,并分别实现上述语句。是否有一种方法可以使布局中的所有EditText视图都不可编辑 应用程序是这样的:我有一个“显示和编辑”活动,其中向用户显示数据库中的当前记录。此时,显示的文本应为只读。如果需要,他单击编辑按钮,然后EditText

我搜索并找到了使单个EditText不可编辑的方法,例如

  • edittext.setKeyListener(空)
  • EditText
    设置为
    android:focusable=“false”
  • 但是,这些方法的问题是,我需要在布局中获取对每个
    EditText
    视图的引用,并分别实现上述语句。是否有一种方法可以使布局中的所有EditText视图都不可编辑

    应用程序是这样的:我有一个“显示和编辑”活动,其中向用户显示数据库中的当前记录。此时,显示的文本应为只读。如果需要,他单击编辑按钮,然后EditText视图将变为可编辑

    我尝试在root
    ViewGroup
    中设置
    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!!