【问题标题】:Layout weight not properly set in dynamically added radio button在动态添加的单选按钮中未正确设置布局权重
【发布时间】:2014-04-21 16:43:01
【问题描述】:

在我的应用程序中,我动态添加了单选按钮,成功地我可以添加并获取我的问题是 UI 的值,它没有正确对齐,布局权重会使我的 UI 发生任何变化

看看我的代码

拥有文本视图和单选按钮

LinearLayout.LayoutParams mainparams = new LinearLayout.LayoutParams(
                        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
                mainparams.setMargins(0, 8, 0, 0);

我的动态文本视图

    LinearLayout li = new LinearLayout(Appointmentdetails.this);
    li.setOrientation(LinearLayout.HORIZONTAL);

    li.setLayoutParams(mainparams);

    LinearLayout.LayoutParams mainparams1 = new LinearLayout.LayoutParams(
            0, LayoutParams.WRAP_CONTENT);
    mainparams1.setMargins(0, 10, 0, 0);

    mainparams1.weight = 1f;
    TextView tv = new TextView(this);
    tv.setTextSize(18);
    tv.setTypeface(Typeface.DEFAULT_BOLD);
    tv.setTypeface(MyriadPro);
    tv.setLayoutParams(mainparams1);
    tv.setText(Alldata.question.get(i).getgQuestion());
    tv.setSingleLine();
    tv.setPadding(25, 10, 0, 0);
    tv.setTextColor(Color.parseColor("#009099"));
    tv.setMarqueeRepeatLimit(10);
    tv.setEllipsize(TruncateAt.MARQUEE);
    tv.setSelected(true);

我的动态单选按钮

RadioGroup rg = new RadioGroup(Appointmentdetails.this);

                // rg.setLayoutParams(lparams1);

                gAnswerList.add("Select vlaue");
                for (int j = 0; j < helptext.split(Expressions).length; j++) {
                    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                            LayoutParams.WRAP_CONTENT,
                            LayoutParams.WRAP_CONTENT);

                    params.setMargins(5, 0, 0, 0);
                    // Edittext.setLayoutParams(lparams1);
                    params.weight = 1.6f;
                    RadioButton rb = new RadioButton(Appointmentdetails.this);
                    rb.setText(helptext.split(Expressions)[j].toString());
                    rb.setId(j);
                    rb.setLayoutParams(params);
                    rg.addView(rb);

                }


                li.addView(tv);
                li.addView(rg);
                mQuestionLayout.addView(li);

我当前的输出

我的单选按钮需要像编辑文本一样对齐,请帮助我获得正确的解决方案,

提前致谢,

【问题讨论】:

  • 尝试为您的 Radio Group 参数提供 LayoutParams.WRAP_CONTENT -> 0。
  • 试过但没有运气,如果我给 0 则单选按钮不显示。
  • 您需要为 rg(无线电组)而不是 rb 赋予布局权重。
  • 是的,得到了​​解决方案,非常感谢..

标签: android user-interface dynamic radio-button


【解决方案1】:

//您还需要将布局参数设置为 Radio 组

同样的mainparams1 也可以重复用于RadioGroup

 LinearLayout.LayoutParams mainparams1 = new LinearLayout.LayoutParams(
            0, LayoutParams.WRAP_CONTENT);

rg.setLayoutParams(mainparams1);

【讨论】:

    【解决方案2】:

    你没有指定权重

        li.setWeightSum(weightSum);
    

    其中 weightSum = 所有子视图的总权重

    【讨论】:

    • 感谢您的回复,我通过将布局参数添加到单选组而不是单选按钮来获得解决方案。
    猜你喜欢
    • 1970-01-01
    • 2013-09-14
    • 2018-05-15
    • 2011-11-14
    • 1970-01-01
    • 2016-10-19
    • 1970-01-01
    • 2020-03-18
    • 1970-01-01
    相关资源
    最近更新 更多