Переключатель устанавливает поля и выравнивает программно - PullRequest
0 голосов
/ 27 ноября 2018

Я настраиваю RadioGroup с помощью RadioButton, и они все заполняются динамически на основе данных в Firebase.Я устанавливаю параметры следующим образом:

 mParams = new RadioGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    mParams.setMargins(0,0,4,6);

Затем я создаю экземпляры своих объектов RadioButton:

public void addRadioButtonsWithFirebaseAnswers(List<DocumentSnapshot> answers) {
        mPollAnswerArrayList = new ArrayList<RadioButton>();
        int indexCreated = 0;
        for (DocumentSnapshot answerSnapshot : answers) {
            Answer answer = answerSnapshot.toObject(Answer.class);
            mPollAnswerArrayList.add((indexCreated), new RadioButton(mContext));
            RadioButton radioButton = mPollAnswerArrayList.get(indexCreated);
            radioButton.setTag(indexCreated);
            radioButton.setText(answer.getAnswer().toString());
            radioButton.setTextColor(getResources().getColor(R.color.black));
            radioButton.setButtonDrawable(R.drawable.custom_btn_radio);
            //TODO: Investigate if this line is necessary
            radioButton.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.radio_button_answer_text_size));

            mPollQuestionRadioGroup.addView(radioButton, mParams);
            indexCreated++;
        }
    }

Ниже показано, как это выглядит.Я хочу добавить пробел между переключателем и текстом.Я также хочу пробел между каждой кнопкой.Наконец, я хотел бы, чтобы текст центрировался кнопкой, если это возможно.

enter image description here

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

Попробуйте это.

LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
                    ViewGroup.LayoutParams.WRAP_CONTENT);
    layoutParams.setMargins(10, 10, 10, 10); // leftMargin, topMargin, rightMargin, buttomMargin
     RadioGroup radioGroup = new RadioGroup(getContext());
     RadioButton radioButton = new RadioButton(getContext());
     radioButton.setLayoutParams(params1);
     radioButton.setId(1);
     radioButton.setText("text");
     radioButton.setPadding(0, 5, 0, 5); // leftMargin, topMargin, rightMargin, buttomMargin
     radioGroup.addView(radioButton);

используйте это для проверки / выбора переключателя,

radioGroup.check(3);  

используйте это для снятия флажка переключателя,

radioGroup.clearCheck();
0 голосов
/ 27 ноября 2018

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

radioButton.setText("   " + answer.getAnswer().toString());

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

LayoutParams params = new LayoutParams(
    LayoutParams.WRAP_CONTENT,      
    LayoutParams.WRAP_CONTENT
);
params.setMargins(leftMargin, topMargin, rightMargin, 15);
radioButton.setLayoutParams(params);

15 - это нижний предел, который вы можете изменить по своему желанию.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...