Matt Huggins
Matt Huggins

Reputation: 83269

Android CheckBox text not displaying

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

Upvotes: 10

Views: 11653

Answers (4)

user2593791
user2593791

Reputation: 1

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

Upvotes: 0

Matt Huggins
Matt Huggins

Reputation: 83269

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

Upvotes: 23

Sephy
Sephy

Reputation: 50392

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

Upvotes: 1

jazz
jazz

Reputation: 1216

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

Upvotes: 5

Related Questions