RadioButton 的文本在 setTextSize 调用后不显示

RadioButton's Text not displaying after setTextSize call

我已经以编程方式向预先存在的 RadioGroup 添加了几个 RadioButton。按钮本身在那里并且可以点击,但它们的文本不会出现。我已经使用 setText 方法设置了它们的文本,并且通过使用 ToastRadioButtongetText 方法,我能够确认所有按钮都拥有他们应该有的文本 - 他们只是不显示它们。

我已确保将它们的 alpha 设置为 1,将文本大小设置为 20sp,将它们的可见性设置为 View.Visible,并且我多次尝试将文本颜色和背景颜色更改为对比色,但是文本仍然没有出现。

谁能帮我弄清楚如何让文字出现?


Java代码:

        for(int i = 0; i < CERTAIN_CONSTANT_VALUE; i++)
        {
            RadioButton r = new RadioButton(this);
            android.widget.LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
            r.setLayoutParams(params);
            r.setId(View.generateViewId());
            r.setText(answers[i]);
            r.setOnClickListener(this::onBtnClicked);
            r.setTextSize(20, TypedValue.COMPLEX_UNIT_SP);
            r.setTypeface(Typeface.SANS_SERIF, Typeface.BOLD);
            r.setTextColor(Color.BLACK);
            r.setAlpha(1);
            r.setVisibility(View.VISIBLE);
            r.setBackgroundColor(Color.GREEN);
            this.radioGroup.addView(r);
        }

XML文件中的RadioGroup

<RadioGroup
    android:id="@+id/radioGroup"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="200dp">
</RadioGroup>

最小的、可重现的例子

Java:

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Color;
import android.graphics.Typeface;
import android.os.Bundle;
import android.util.TypedValue;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;

public class MainActivity extends AppCompatActivity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        RadioGroup radioGroup = findViewById(R.id.radioGroup);
        String[] answers = {"first", "second", "third", "fourth"};
    
        for (int i = 0; i < 4; i++)
        {
            RadioButton r = new RadioButton(this);
            android.widget.LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
            r.setLayoutParams(params);
            r.setId(View.generateViewId());
            r.setText(answers[i]);
            r.setOnClickListener(this::onBtnClicked);
            r.setTextSize(20, TypedValue.COMPLEX_UNIT_SP);
            r.setTypeface(Typeface.SANS_SERIF, Typeface.BOLD);
            r.setTextColor(Color.BLACK);
            r.setAlpha(1);
            r.setVisibility(View.VISIBLE);
            r.setBackgroundColor(Color.GREEN);
            radioGroup.addView(r);
        }
    }

    public void onBtnClicked(View view){}
}

XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <RadioGroup
        android:id="@+id/radioGroup"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </RadioGroup>
</LinearLayout>

只需将 setTextSize 更改为:

r.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20f);