gpt4 book ai didi

java - Android - RadioButtons 在 RadioGroup 中挤压 - 格式问题

转载 作者:行者123 更新时间:2023-12-02 07:45:34 25 4
gpt4 key购买 nike

我试图将 TableRow 分成 4 个相等的部分。第一个是 TextView,最后三个是 RadioGroups。我已成功将 TableRow 分成这些相等的部分。但是,每行都是动态构建的,每个 RadioGroup 可能最多有 5 个 RadioButton。当在每个 RadioGroup 中构建具有 5 个 RadioButtonsTableRow 时,所有内容都会显示并起作用,但 RadioButtons 会被压在一起。发生这种情况时,是否有某种方法可以让 RadioGroup 具有多行,但仍保留在同一 TableRow 的同一部分?基本上就像 TextView 当给定正确的参数时会变成多行?

本例的 Java 代码:

RadioButton rb1, rb2, rb3, rb4, rb5;
RadioGroup rg;
TextView tv;
TableLayout tl = (TableLayout) this.findviewById(R.string.tl);
LayoutInflater inflater = getLayoutInflater();

//set up TableRow and TextView
TableRow tr = (TableRow)inflater.inflate(R.layout.tablerow3q, tl, false);
tr.setBackgroundColor(Color.LTGRAY);
tv = (TextView)tr.findViewById(R.id.tv);
tv.setText("Some text");

//loop sets up 1 RadioGroup per increment, each with 5 RadioButtons
for(int i = 0; i < 3; i++) {
rb1 = new RadioButton(this);
rb2 = new RadioButton(this);
rb3 = new RadioButton(this);
rb4 = new RadioButton(this);
rb5 = new RadioButton(this);

rb1.setText("test1");
rb2.setText("test2");
rb3.setText("test3");
rb4.setText("test4");
rb5.setText("test5");

//without these layouts, only four buttons are displayed, the other is cut off
rb1.setLayoutParams(new RadioGroup.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f);
rb2.setLayoutParams(new RadioGroup.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f);
rb3.setLayoutParams(new RadioGroup.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f);
rb4.setLayoutParams(new RadioGroup.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f);
rb5.setLayoutParams(new RadioGroup.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f);

//add RadioButtons to correct RadioGroup based on loop increment
if(i == 0) {
rg1 = (RadioGroup)tr.findViewById(R.id.rg1);
rg1.addView(rb1);
rg1.addView(rb2);
rg1.addView(rb3);
rg1.addView(rb4);
rg1.addView(rb5);
}
if(i == 1) {
rg1 = (RadioGroup)tr.findViewById(R.id.rg2);
rg1.addView(rb1);
rg1.addView(rb2);
rg1.addView(rb3);
rg1.addView(rb4);
rg1.addView(rb5);
}
if(i == 2) {
rg1 = (RadioGroup)tr.findViewById(R.id.rg3);
rg1.addView(rb1);
rg1.addView(rb2);
rg1.addView(rb3);
rg1.addView(rb4);
rg1.addView(rb5);
}
}
tl.addView(tr);

正在膨胀的 TableRow 的 XML 布局:

<?xml version="1.0" encoding="utf-8"?>
<TableRow xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:id="@+id/tv"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_margin="1dip"
android:layout_weight="0.25"
android:background="#ffffff"/>
<RadioGroup
android:id="@+id/rg1"
android:layout_width="0dip"
android:orientation="horizontal"
android:layout_margin="1dip"
android:layout_weight="0.25"
android:background="#ffffff"/>
<RadioGroup
android:id="@+id/rg2"
android:layout_width="0dip"
android:orientation="horizontal"
android:layout_margin="1dip"
android:layout_weight="0.25"
android:background="#ffffff"/>
<RadioGroup
android:id="@+id/rg3"
android:layout_width="0dip"
android:orientation="horizontal"
android:layout_margin="1dip"
android:layout_weight="0.25"
android:background="#ffffff"/>
</TableRow>

最佳答案

RadioGroup 扩展了 LinearLayout,它不包装其内容。不过,有几个选项可以解决这个问题:

  1. 复制 RadioGroup 类的源代码并修改它以扩展不同类型的布局,例如 TableLayoutRelativeLayout.您需要管理单选按钮的排列方式。

  2. 动态构建嵌套的TableLayout并使用OnClickListener来处理选择/取消选择各种单选按钮。

关于java - Android - RadioButtons 在 RadioGroup 中挤压 - 格式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10913899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com