применение настроек макета к динамически добавленным кнопкам в радиогруппе android - PullRequest
0 голосов
/ 08 апреля 2020

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

for (int i = 0; i < keys.length; i++) {
        final RadioButton rdbtn = new RadioButton(this);
        rdbtn.setId(View.generateViewId());
        rdbtn.setText(keys[i]);
        rdbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                selectedWH = rdbtn.getText().toString();
            }
        });
        mRgAllButtons.addView(rdbtn);
    }

, и я хотел бы применить этот стиль к кнопкам

<RadioButton

            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:layout_marginStart="60dp"
            android:layout_marginEnd="60dp"
            android:background="@drawable/radio_pressed"
            android:button="@android:color/transparent"                
            android:textAlignment="center"
            android:textColor="@color/colorPrimary"
            android:textSize="18sp"
            android:textStyle="bold" />

Любая помощь очень ценится.

Ответы [ 2 ]

0 голосов
/ 08 апреля 2020

Это простой способ. Вы можете создать экземпляр вида RadioButton из XML, чтобы он имел нужный вам стиль.

  1. Создание XML макета с элементом RadioButton и стилем - именно то, что вы упомянули.
  2. Используйте этот макет для создания нового представления RadioButton (и добавьте его в RadioGroup).

 LayoutInflater inflater = LayoutInflater.from(context);

 for (int i = 0; i < keys.length; i++) {
    final RadioButton rdbtn = inflater.inflate(R.layout.layout_name, mRgAllButtons, false);
    // mRgAllButtons - parent of this view.
    // attachToParent - false - add to the parent manually.
    rdbtn.setId(View.generateViewId());
    rdbtn.setText(keys[i]);
    rdbtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            selectedWH = rdbtn.getText().toString();
        }
    });
    mRgAllButtons.addView(rdbtn);
}
0 голосов
/ 08 апреля 2020
ViewGroup.MarginLayoutParams marginLayoutParams = new ViewGroup.MarginLayoutParams(yourWidth, yourHeight);
    marginLayoutParams.leftMargin = yourLeftMargin;
    marginLayoutParams.rightMargin = yourRightMargin;
    rdbtn.setLayoutParams(marginLayoutParams);

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

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