Android自定义复选框/单选按钮文本不显示

Android自定义复选框/单选按钮文本不显示,android,android-checkbox,android-radiogroup,android-radiobutton,Android,Android Checkbox,Android Radiogroup,Android Radiobutton,我正在尝试使用Http请求中的信息以编程方式创建自定义单选按钮/复选框(在应用程序中创建调查)。我在中尝试了建议的解决方案,但文本仍然没有出现 answer.setBackgroundResource(R.drawable.radio_selector); 我可以创建自定义按钮视图,但由于某些原因,文本无法显示。知道我哪里出错了吗 answer.setBackgroundResource(R.drawable.radio_selector); 复选框\u选择器: <?xml versi

我正在尝试使用Http请求中的信息以编程方式创建自定义单选按钮/复选框(在应用程序中创建调查)。我在中尝试了建议的解决方案,但文本仍然没有出现

answer.setBackgroundResource(R.drawable.radio_selector);
我可以创建自定义按钮视图,但由于某些原因,文本无法显示。知道我哪里出错了吗

answer.setBackgroundResource(R.drawable.radio_selector);
复选框\u选择器:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/multiselected" android:state_checked="true"/>
    <item android:drawable="@drawable/multiunselected" android:state_checked="false"/>

</selector>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/singleselected" android:state_checked="true"/>
    <item android:drawable="@drawable/singleunselected" android:state_checked="false"/>

</selector>
answer.setBackgroundResource(R.drawable.radio_selector);

无线电选择器:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/multiselected" android:state_checked="true"/>
    <item android:drawable="@drawable/multiunselected" android:state_checked="false"/>

</selector>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/singleselected" android:state_checked="true"/>
    <item android:drawable="@drawable/singleunselected" android:state_checked="false"/>

</selector>
answer.setBackgroundResource(R.drawable.radio_selector);

以下是我创建它们的方式:

if (mQuestion != null && mQuestion.isSingleResponse()
                    && mAnswerTitles.size() > 0) {
                for (int i = 0; i < mAnswerTitles.size(); i++) {
                    Answer answer1 = mAnswerTitles.get(i);
                    RadioButton answer = new RadioButton(getActivity());

                    answer.setText(answer1.getTitle().toString());
                    answer.setTextSize(24);
                    answer.setTextColor(Color.BLACK);
                    answer.setId(answer1.getId());
                    answer.setButtonDrawable(R.drawable.radio_selector);
                    answer.setLayoutParams(mRadioGroupAnswers.getLayoutParams());
                    answer.setOnClickListener(new View.OnClickListener() {

                        @Override
                        public void onClick(View v) {
                            // TODO Auto-generated method stub
                            mNextQuestion.setEnabled(true);
                        }
                    });
                    mRadioGroupAnswers.addView(answer);
                }
            } else {
                if (mAnswerTitles != null && mAnswerTitles.size() > 0) {
                    for (int i = 0; i < mAnswerTitles.size(); i++) {
                        Answer answer1 = mAnswerTitles.get(i);
                        CheckBox answer = new CheckBox(getActivity());
                        answer.setText(answer1.getTitle().toString());
                        answer.setTextSize(24);
                        answer.setTextColor(Color.BLACK);
                        answer.setId(answer1.getId());
                        answer.setButtonDrawable(R.drawable.checkbox_selector);
                        answer.setLayoutParams(mRadioGroupAnswers.getLayoutParams());
                        answer.setOnClickListener(new View.OnClickListener() {

                            @Override
                            public void onClick(View v) {
                                // TODO Auto-generated method stub
                                mNextQuestion.setEnabled(true);
                            }
                        });
                        if (mAnswerHolder != null) {
                            mAnswerHolder.addView(answer);
                        }
                    }
                }
answer.setBackgroundResource(R.drawable.radio_selector);
if(mQuestion!=null&&mQuestion.isSingleResponse()
&&mAnswerTitles.size()>0){
对于(int i=0;i0){
对于(int i=0;i
以及我要将它们添加到的组/布局:

<RadioGroup
            android:layout_marginTop="8dp"
            android:id="@+id/answerGroup"
            android:textColor="@android:color/black"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >
        </RadioGroup>

        <LinearLayout
            android:id="@+id/answerTextHolder"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical" >
        </LinearLayout>
answer.setBackgroundResource(R.drawable.radio_selector);

看起来文本实际上只是被图像隐藏,而不是放在图像上,并用文本长度重新调整图像大小:

answer.setBackgroundResource(R.drawable.radio_selector);

我明白了!诀窍是使用setBackgroundResource而不是setButtonDrawable:

answer.setBackgroundResource(R.drawable.radio_selector);

answer.setBackgroundResource(R.drawable.radio_selector);
在做了一些测试之后,我建议如果你完全是定制的,也可以覆盖单选/复选框按钮drawable

answer.setBackgroundResource(R.drawable.radio_selector);