首页 > 解决方案 > 在android studio中单击时如何使复选框可编辑

问题描述

我试图在带有复选框的 android studio 中创建一个待办事项列表,其想法是每次按下按钮时都能够将复选框添加到线性布局中。这很简单,但我希望能够在我创建它后单击它时更改复选框文本。

我试图制作没有文本的文本框,只是在它旁边放置一个纯文本,但我还没有找到一种方法将它们放在线性布局的同一行上。纯文本只出现在下面的行上。我想知道是否有任何方法可以制作自定义组件,当单击文本时使复选框文本可编辑,并在单击复选框本身时选中该框,我可以将其放置在线性布局中。

这是我为线性布局添加另一个复选框的代码:

    public void click(View v)
    {
        LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        CheckBox cb=new CheckBox(this);
        cb.setLayoutParams(lparams);
        cb.setText(t.getText());
        this.ll.addView(cb);
    }

标签: javaandroidandroid-studioandroid-checkbox

解决方案


检查复选框是什么:复选框源

现在您知道您有一个 "CompoundButton" ,如果您查看 源代码,它就是一个 Button

如果您检查源代码,这是一个TextView

用于编辑文本的 EditText,如果您检查源,它是一个 TextView

因此,它的父级是 TextView,并且在您的自定义组件中,您必须将 EditText 添加的功能和值组合到您的 CheckBox 中。如果您有时间并且不懒惰,您可以确定,只需扩展 CheckBox 并添加事件和处理。

BAHMAN 提供的解决方案快速而简单(但对我来说不够优雅),如果您想要一个快速的结果,您可以执行该解决方案或基于该解决方案:

在 .xml 布局中声明一个名为“容器”的视图。在您的代码(运行时)首先添加复选框。在 Click 事件中删除复选框(如果您没有在 .xml 中添加,但在代码中可以这样做)并添加一个编辑文本,您可以在其中收听完成编辑事件。然后删除编辑文本并放回复选框。在这种情况下,您没有将组件和侦听器加倍。

由于它是一个 TODO 列表,可以有很多复选框,我会选择我提供的最后一个解决方案。如果你做一个昂贵的商业产品,比我提供的第一个解决方案。


推荐阅读