0

動的なラジオボタンを線形レイアウトにしようとしています。リストから呼び出され、線形レイアウトに追加された2つのラジオボタンがあります。ラジオボタンの見栄えが悪くなり、このレイアウトで動かなくなるまで、すべてが正常に機能します。私の質問は、なぜ私のラジオボタンのレイアウトがまったく機能しないのですか?
これが私のコードです:

TextView label;
RadioButton[] rb;
RadioGroup radiogroup;
LinearLayout ll;
String title;

public MyBtn(Context context,String labelText,String options) {
   super(context);

   ll = new LinearLayout(context);
   ll.setOrientation(LinearLayout.VERTICAL);

   LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
       LayoutParams.FILL_PARENT,
       LayoutParams.WRAP_CONTENT);

   ll.setLayoutParams(params);

   label = new TextView(context);
   label.setText(labelText);
   label.setTextColor(getResources().getColor(R.color.label_color));

   radiogroup = new RadioGroup(context);
   radiogroup.setOrientation(RadioGroup.HORIZONTAL);

   radiogroup.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

   LinearLayout.LayoutParams [] rbLayout = new RadioGroup.LayoutParams[2]; 

   LinearLayout.LayoutParams  rbParam = new RadioGroup.LayoutParams(
         RadioGroup.LayoutParams.WRAP_CONTENT, RadioGroup.LayoutParams.WRAP_CONTENT);
   rbParam.weight = 1f;
   rbParam.gravity = Gravity.CENTER | Gravity.LEFT;

   LinearLayout.LayoutParams  rbParam2 = new RadioGroup.LayoutParams(
         RadioGroup.LayoutParams.WRAP_CONTENT, RadioGroup.LayoutParams.WRAP_CONTENT);
   rbParam2.gravity = Gravity.CENTER | Gravity.RIGHT;
   rbParam2.weight = 1f;

   rbLayout[0] = new RadioGroup.LayoutParams(rbParam);                  
   rbLayout[1] = new RadioGroup.LayoutParams(rbParam2);

   List<String> list = Arrays.asList(options.split("\\|"));
   String[] opts = new String[list.size()];
   list.toArray(opts);

   rb = new RadioButton[list.size()];

   for (int i = 0; i < list.size(); i++) {
      rb[i] = new RadioButton(context);
      rb[i].setText(opts[i]);
      rb[i].setId(i);
      radiogroup.addView(rb[i],rbLayout[i]);         
   }

   title = label.getText().toString();

   radiogroup.check(0);

   ll.addView(label);
   ll.addView(radiogroup);

   //int resID = getResources().getIdentifier(buttonID, "id", context.getPackageName());  

   this.addView(ll); 
}

ありがとうございました。

私のラジオボタン:
画像リンク

それは:
画像リンク

4

1 に答える 1

0

これを変える:

LinearLayout.LayoutParams [] rbLayout = new RadioGroup.LayoutParams[2];
LinearLayout.LayoutParams  rbParam2 = new RadioGroup.LayoutParams(
     RadioGroup.LayoutParams.WRAP_CONTENT, RadioGroup.LayoutParams.WRAP_CONTENT);

これに:

RadioGroup.LayoutParams [] rbLayout = new RadioGroup.LayoutParams[2];
RadioGroup.LayoutParams  rbParam2 = new RadioGroup.LayoutParams(
     RadioGroup.LayoutParams.WRAP_CONTENT, RadioGroup.LayoutParams.WRAP_CONTENT);

あなたのコードには同じ間違いがたくさんあります。それらを見つけて修正し、結果を知らせてください


LinearLayout.LayoutParams  rbParam = new RadioGroup.LayoutParams(
     RadioGroup.LayoutParams.FILL_PARENT, RadioGroup.LayoutParams.WRAP_CONTENT,1f);

それはうまくいくはずです。それについて教えてください

于 2012-07-19T06:55:50.647 に答える