2012-07-18 64 views
0

我正在尝试使线性布局的动态单选按钮。我有两个单选按钮,从列表中调用并添加到线性布局。一切工作正常,直到我不好看我的单选按钮,并与此布局卡住。我的问题是为什么我的单选按钮布局根本不起作用?
这里是我的代码:动态单选按钮布局不起作用

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); 
} 

谢谢。

我的单选按钮:
image link

它应该:
image link

+0

你的问题目前的措辞是很难理解。你能修改你的问题吗? – prolink007 2012-07-18 22:02:59

+0

对不起,我的坏话,问题是单选按钮布局命名rblayout在这一行不工作_radiogroup.addView(rb [i],rbLayout [i]); _谢谢 – kandz 2012-07-19 06:56:55

回答

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); 

必须工作。 让我知道它

+0

感谢您的答案,但仍然无法正常工作 – kandz 2012-07-19 07:38:15