Android RadioButton не центрируется

#android #center #centering #android-radiobutton #android-radiogroup

#Android #центр #центрирование #android-кнопка radiobutton #android-radiogroup

Вопрос:

У меня есть следующие радиокнопки:

введите описание изображения здесь

Они генерируются программно в этом методе:

  private void initializeAbilityComponents() {
    rgAbility = view.findViewById(R.id.rgAbility);

    for (int i = 0; i < abilities.size(); i  ) {
        RadioButton radioButton = new RadioButton(context);
        LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        layoutParams.setMargins(4,4,4,4);
        radioButton.setLayoutParams(layoutParams);
        radioButton.setText(abilities.get(i).getName());
        radioButton.setId(i);
        radioButton.setGravity(Gravity.CENTER);
        PokemonUtils.setRoundedBackgroundColorToView(radioButton,selectedPokemon.getColor());
        rgAbility.addView(radioButton);
    }
  

И добавлен в эту XML-радиогруппу:

   <RadioGroup
                android:id="@ id/rgAbility"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginStart="6dp"
                android:layout_marginEnd="6dp"
                android:layout_marginBottom="4dp"
                android:layoutAnimation="@anim/default_layout_right_to_left_animation"
                android:orientation="vertical" />
  

Однако, как вы можете видеть, они на самом деле не центрированы, результат, который я ожидаю, когда я центрирую, это :

введите описание изображения здесь

Как я могу это исправить?

Комментарии:

1. Вы хотите, чтобы точки были в центре? если вы можете поделиться всем кодом

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

Ответ №1:

Вы должны добавить:

 radioButton.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
radioButton.setPadding(0,0,100,0); //left, top, right, bottom
  

При значении 100 для right вы перемещаете текст влево

Ответ №2:

Это происходит потому, что и точка, и текст являются частью представления. Если вы хотите, чтобы текст был «более центрированным», вам нужно добавить paddingEnd . Конечно, это заполнение зависит от размера точки.

Комментарии:

1. добавить конец заполнения в группу радиостанций или переключатель?

2. Добавьте его в RadioButton