Home » Android » Android CheckBox text not displaying

Android CheckBox text not displaying

Posted by: admin May 14, 2020 Leave a comment

Questions:

I’m trying to dynamically create some CheckBoxes in one of my Android activities, but it’s not rendering the text.

Here is my simplified code…

  1. Layout 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>
    
  2. Activity code:

    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);
    

My “real” code is a little more complex (any dynamic) than this, which is why I haven’t simply included the checkboxes in the layout itself. However, even dumbing down my code still doesn’t render the checkbox text properly.

Here’s a screenshot to demonstrate (see the “Attracted To” section), with a little extra to demonstrate that my vertical layout appears to be working properly otherwise:

Android checkboxes missing text

How to&Answers:

Of course I figure this out shortly after posting a bounty. 😉 It turns out that since I was setting my container view’s background color to white, the default white text was blending in. The solution was to set the text color of each checkbox. i.e.:

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);

Answer:

you are not setting the Layout parameters, Layout parameter says how the control will be shown

final CheckBox female = new CheckBox(this);
female.setText("Female");
female .setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f));
attractedTo.addView(female);

Answer:

Maybe it’s due to the simplification of your real code, but did you set width and height of your checkbox ?

Answer:

I just did the same and found that I was using setText("") in the initialisation code rather than setChecked(false). Dur!