簡體   English   中英

Android - RadioButtons在RadioGroup中肆虐 - 格式化問題

[英]Android - RadioButtons squishing up in RadioGroup - formatting issues

我試圖將TableRow分成4個相等的部分。 第一個是TextView ,最后三個是RadioGroups 我已成功將TableRow拆分為這些相等的部分。 但是,每一行都是動態構建的,每個RadioGroup最多可能有5個RadioButtons 當在每個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類的源代碼並修改它以擴展不同類型的Layout,例如TableLayoutRelativeLayout 您需要管理單選按鈕的排列方式。

  2. 動態構建嵌套的TableLayout並使用OnClickListener來處理選擇/取消選擇各種單選按鈕。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM