【问题标题】:Make all EditText not editable together使所有 EditText 不可一起编辑
【发布时间】:2017-04-26 09:26:52
【问题描述】:

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

  1. edittext.setKeyListener(null);
  2. EditText设置为android:focusable="false"

但是,这些方法的问题是我需要在我的布局中获取对每个EditText 视图的引用,并单独实现上述语句。有没有办法让布局中的所有 EditText 视图都不可编辑?

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

我尝试在根目录ViewGroup 中设置android:inputType="none"android:focusable="false",但这不起作用。有出路吗?

【问题讨论】:

    标签: android android-edittext


    【解决方案1】:

    如果您想以编程方式实现这一目标,

    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);
            }
        }
    }
    

    将此方法与您的片段或活动的父视图一起提供。

    当您单击编辑按钮时,将父视图和 true(即,可编辑)传递给方法,并在编辑后传递父视图和 false(即,不可编辑)。

    【讨论】:

    • 谢谢,但最后一次调用 setupUI 也会包含可编辑的布尔参数,对吧?
    • 我删除了函数声明中的布尔可编辑参数,它工作正常。谢谢。单击时视图会亮起。我想我可以包含一个命令来使视图也无法点击。
    • 惊人的代码!特别是递归部分。优雅简洁。谢谢!!
    【解决方案2】:

    来自android:descendantFocusability docs

    在寻找 View 以获取焦点时定义 ViewGroup 与其后代之间的关系。

    将此应用于EditTexts 的父级:

    android:descendantFocusability="blocksDescendants"
    

    这将导致ViewGroup 阻止其后代接收焦点。

    【讨论】:

    • 这行得通,谢谢!虽然,单击时 EditText 视图仍然亮起。如果也有某种方法可以禁用可点击,那就太好了。找不到类似的属性。
    • 申请android:focusable="false"EditText
    • 但我必须分别对每个 EditText 执行此操作,这是整个问题。
    • 您是否将android:focusable="false" 应用于根布局?
    • 这也没用,但你的答案有效,即 android:descendantFocusability="blocksDescendants",只是它在视觉上响应点击的小问题
    猜你喜欢
    • 2015-10-25
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多