java - 在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);
}
解决方案
检查复选框是什么:复选框源
现在您知道您有一个 "CompoundButton" ,如果您查看 源代码,它就是一个 Button
如果您检查源代码,这是一个TextView
用于编辑文本的 EditText,如果您检查源,它是一个 TextView
因此,它的父级是 TextView,并且在您的自定义组件中,您必须将 EditText 添加的功能和值组合到您的 CheckBox 中。如果您有时间并且不懒惰,您可以确定,只需扩展 CheckBox 并添加事件和处理。
BAHMAN 提供的解决方案快速而简单(但对我来说不够优雅),如果您想要一个快速的结果,您可以执行该解决方案或基于该解决方案:
在 .xml 布局中声明一个名为“容器”的视图。在您的代码(运行时)首先添加复选框。在 Click 事件中删除复选框(如果您没有在 .xml 中添加,但在代码中可以这样做)并添加一个编辑文本,您可以在其中收听完成编辑事件。然后删除编辑文本并放回复选框。在这种情况下,您没有将组件和侦听器加倍。
由于它是一个 TODO 列表,可以有很多复选框,我会选择我提供的最后一个解决方案。如果你做一个昂贵的商业产品,比我提供的第一个解决方案。
推荐阅读
- react-native - react-native:重新渲染后字母消失在react-native的当前页面上
- python - 如何使用 BERT Transformers 在句子相似度中添加余弦相似度作为评分函数
- elasticsearch - Filebeats HMAC 哈希
- c# - 需要帮助阅读不在括号 [] 内的 Json 对象列表
- boost-beast - 在 boost::beast 中获取客户端端口
- node.js - 构建一个使用 OAUTH 对外部系统进行身份验证的 Slack 应用程序
- python - 模块不总是可用时的 Python 最佳实践
- python - 如何为 tkinter 创建语言按钮?
- autodesk-forge - 可以在 Tableau 仪表板中嵌入 forge Viewer 吗?
- r - 如何创建两列计算两个条件的总数