【问题标题】:applying layout preferences to dynamically added buttons in android radiogroup将布局首选项应用于 android radiogroup 中动态添加的按钮
【发布时间】:2020-07-20 20:44:15
【问题描述】:

我试图研究所有可能的答案,但我真的不知道如何继续。 我正在动态地将单选按钮创建到单选组中

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" />

非常感谢任何帮助。

【问题讨论】:

    标签: java android xml styles


    【解决方案1】:
    ViewGroup.MarginLayoutParams marginLayoutParams = new ViewGroup.MarginLayoutParams(yourWidth, yourHeight);
        marginLayoutParams.leftMargin = yourLeftMargin;
        marginLayoutParams.rightMargin = yourRightMargin;
        rdbtn.setLayoutParams(marginLayoutParams);
    

    将此添加到您的代码中,以便为您动态创建的视图设置布局参数,您必须为其创建 LayoutParams。在那里你可以设置任何你想要的边距。

    【讨论】:

      【解决方案2】:

      这是一个简单的方法。您可以从 XML 创建一个 RadioButton 视图实例,以便它具有您想要的样式。

      1. 使用 RadioButton 元素和样式创建 XML 布局 - 正是您所提到的。
      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);
      }
      

      【讨论】:

      • 你的解决方案我快到了,唯一的问题是 setText 被忽略(至少在图形上,因为字符串的内容确实存在[点击按钮时我可以看到它) ])
      • 尝试更改 xml 文件中的颜色。可能与背景颜色冲突。
      • 试过了,但没有改变,我正在尝试按照link寻找可能的解决方案@
      • 我认为缓存中有一些东西,因为我关闭、重新打开、重建,现在它可以工作了。再次感谢,已接受回答
      猜你喜欢
      • 1970-01-01
      • 2011-04-26
      • 1970-01-01
      • 1970-01-01
      • 2012-04-08
      • 1970-01-01
      • 1970-01-01
      • 2012-09-29
      • 2013-08-27
      相关资源
      最近更新 更多