我试图在Android Studio中创建一个带有复选框的待办事项列表,其想法是每次我按下按钮时都能够将复选框添加到线性布局中。这非常简单,但是我想在ive创建后单击它时可以更改复选框文本。
我试图使文本框没有文本,只是在文本框旁边放置一个纯文本,但是我还没有找到一种将它们都放置在线性布局的同一行上的方法。纯文本仅显示在下面的行中。我想知道是否有什么方法可以使自定义组件在单击文本时使复选框文本可编辑,并在单击复选框本身时选中复选框,以便将其放置在线性布局中。
这是为在线性布局中添加另一个复选框而完成的代码:
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);
}
答案 0 :(得分:0)
您可以添加水平的线性布局或自定义视图来扩展LinearLayout
,该视图包含CheckBox
和EditText
,并且它们的初始设置为{{当用户在CheckBox
中输入一些文本并按Enter键,则{1}}消失了,设置EditText
标签等于CheckBox
的文本,然后将EditText
的可见性设置为走,并设置EditText
设为可见。再次单击复选框,执行类似的工作。
最好创建一个自定义View(扩展CheckBox
的类)并在该类中胜任工作。并且每次您需要一个新的复选框时,都可以将此自定义视图添加到布局中,而不是将复选框添加到布局中。
答案 1 :(得分:0)
选中复选框是什么:Checkbox source
现在您知道您有一个“ CompoundButton”,如果您查看 source
如果您检查源source,则为TextView
用于编辑文本的EditText,如果您选中source,则为TextView
因此父级是TextView,并且在您的自定义组件中,您必须将EditText添加的功能和值组合到CheckBox中。如果您有时间并且不懒惰,可以肯定地做到这一点,只需扩展CheckBox并添加事件和处理即可。
BAHMAN提供的解决方案既快速又简单(但对我来说还不够优雅),如果您想获得快速的结果,则可以执行该解决方案或基于该解决方案:
在.xml布局中声明一个名为“容器”的视图。在您的代码(运行时)上,首先添加复选框。在Click事件上,删除Checkbox(如果您没有在.xml处添加,但是可以在代码中执行此操作),然后添加一个Edit文本,您可以在其中收听结束编辑事件。然后,删除“编辑”文本并放回“复选框”。在这种情况下,您没有将组件和侦听器加倍。
由于这是一个TODO列表,可以有许多复选框,所以我将选择我提供的最后一个解决方案。如果您生产的是昂贵的商业产品,则不是我提供的第一个解决方案。