我正在尝试在我的某个Android活动中动态创建一些CheckBox,但它不会渲染文本。
这是我的简化代码......
布局XML:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dip">
...
<LinearLayout
android:id="@+id/register_attracted_to"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />
...
</LinearLayout>
活动代码:
final LinearLayout attractedTo = (LinearLayout) findViewById(R.id.register_attracted_to);
final CheckBox male = new CheckBox(this);
male.setText("Male");
attractedTo.addView(male);
final CheckBox female = new CheckBox(this);
female.setText("Female");
attractedTo.addView(female);
我的“真实”代码比这更复杂(任何动态),这就是我没有简单地在布局本身中包含复选框的原因。但是,即使对我的代码进行调整仍然无法正确呈现复选框文本。
这是一个用于演示的屏幕截图(请参阅“吸引到”部分),稍加一些,以证明我的垂直布局似乎正常工作:
答案 0 :(得分:22)
当然,我在发布赏金后不久就想到了这一点。 ;)事实证明,由于我将容器视图的背景颜色设置为白色,因此默认的白色文本正在混合。解决方案是设置每个复选框的文本颜色。即:
final LinearLayout attractedTo = (LinearLayout) findViewById(R.id.register_attracted_to);
final CheckBox male = new CheckBox(this);
male.setText("Male");
male.setTextColor(getResources().getColor(R.color.foreground_text));
attractedTo.addView(male);
final CheckBox female = new CheckBox(this);
female.setText("Female");
female.setTextColor(getResources().getColor(R.color.foreground_text));
attractedTo.addView(female);
答案 1 :(得分:5)
您没有设置布局参数,布局参数说明控件将如何显示
final CheckBox female = new CheckBox(this);
female.setText("Female");
female .setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f));
attractedTo.addView(female);
答案 2 :(得分:0)
也许是因为您的真实代码的简化,但您是否设置了复选框的宽度和高度?
答案 3 :(得分:0)
我只是做了同样的事情,发现我在setText("")
中使用了initialisation code
,而不是setChecked(false)
。杜尔!