Текст Android CheckBox не отображается

Я пытаюсь динамически создавать некоторые CheckBox в одной из моих действий в Android, но это не делает текст.

Вот мой упрощенный код...

  • Формат 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);
    

Мой "реальный" код немного сложнее (любая динамика), чем это, поэтому я не просто включил флажки в самом макете. Тем не менее, даже опускание моего кода по-прежнему не отображает корректный текст.

Вот скриншот, чтобы продемонстрировать (см. раздел "Привлечение к" ), с небольшим количеством дополнительных, чтобы продемонстрировать, что мой вертикальный макет, похоже, работает правильно иначе:

Android checkboxes missing text

Ответ 1

Конечно, я понял это вскоре после публикации щедрости.;) Оказывается, что, поскольку я устанавливал цвет фона в виде контейнера на белый, белый текст по умолчанию смешивался. Решение заключалось в том, чтобы установить цвет текста каждого флажка. то есть:.

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

Ответ 2

вы не устанавливаете параметры макета, параметр Layout указывает, как будет отображаться элемент управления

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

Ответ 3

Возможно, это связано с упрощением вашего реального кода, но вы установили ширину и высоту вашего флажка?

Ответ 4

Я просто сделал то же самое и обнаружил, что я использовал setText("") в initialisation code а не setChecked(false). Dur!