以编程方式添加Checkbox,没有可见的框

时间:2015-07-08 19:08:52

标签: android checkbox

我尝试使用以下代码以编程方式在我的Android应用程序中创建一个复选框:

mItems[i] = new CheckBox(getApplicationContext(), null, android.R.style.Widget_Holo_CompoundButton_CheckBox);
mItems[i].setText(items.get(i).getName());
mItems[i].setTag(items.get(i).getPrice());
mItems[i].setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
        mFeeContainer.addView(mItems[i], 0);

该字段会添加正确的文本,但是,它只显示文本,没有可见的复选框,我可以单击。如果我使用新的CheckBox(getApplicationContext())创建复选框,那么有一个框但它的样式错误,所以当它没有被选中时它会与我的背景融合。

1 个答案:

答案 0 :(得分:3)

我在你的代码中看到两个问题:

  • 您永远不应该根据应用程序上下文创建视图实例。请改用Activity上下文,该上下文适用于与此上下文相关的所有视图。虽然两者看起来都有类似的行为,但它可能会破坏某些视图中的某些内容并造成内存泄漏。
  • 唯一被认为是以编程方式创建的构造函数是View(Context),其他的构造函数不应该由用户调用,而是由布局inflater调用。使用复选框创建一个xml文件,并使用以下命令创建一个新实例:

LayoutInflater.from(activity).inflate(R.layout.my_checkbox, mFeeContainer, false);

现在,在xml中,您可以为复选框添加所需的任何样式,并且将应用所有默认样式。