2013-03-27 94 views
1

我有一个活动,用户可以使用单选按钮更改设置。可能有2到7个选项,所以我想在我的onCreate()中动态添加单选按钮。通过一些研究,我想出了如何做到这一点,并将结果记录为我自己的利益和您的利益。如何动态添加单选按钮到活动?

回答

1

首先,包括收音机小组件并声明一个。你还需要LayoutParams和RadioButton,所以也包括这些。

//SomeAndroidActivity 
    import android.widget.RadioGroup; 
    import android.view.ViewGroup.LayoutParams; 
    import android.widget.RadioButton; 

    public class SomeAndroidActivity extends Activity() { 
     //declare a radio group 
     RadioGroup radioGroup; 
    } 

在你的onCreate方法中,初始化射频组。

//SomeAndroidActivity 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_some_android); 
     radioGroup = (RadioGroup) findViewById(R.id.radio_selection_group); 
    } 

R.id.radio_selection_group指的是在你的XML文件中声明单选按钮组,所以一定要确保你有这一点。

<!-- activity_some_android.xml --> 
    <RelativeLayout xmlns:android= 
     "http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     tools:context=".SomeAndroidActivity" > 

     <RadioGroup 
     android:id="@+id/radio_selection_group" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="76dp" 
     android:layout_marginTop="135dp" > 

     </RadioGroup> 
    </RelativeLayout> 

回到SomeAndroidActivity,创建一个方法来动态地向按钮组添加按钮。

//SomeAndroidActivity 
    private void addRadioButtons(int numButtons) { 
     for(int i = 0; i < numButtons; i++) 
     //instantiate... 
     RadioButton radioButton = new RadioButton(this); 

     //set the values that you would otherwise hardcode in the xml... 
     radioButton.setLayoutParams 
      (new LayoutParams 
      (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 

     //label the button... 
     radioButton.setText("Radio Button #" + i); 
     radioButton.setId(i); 

     //add it to the group. 
     radioGroup.addView(radioButton, i); 
     } 
    } 

然后在onCreate中调用该方法。

//SomeAndroidActivity 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_some_android); 
     radioGroup = (RadioGroup) findViewById(R.id.radio_selection_group); 

     int numberOfRadioButtons = 7; 
     addRadioButtons(numberOfRadioButtons); 
    } 

简单的派。

这是我的博客文章。 http://rocketships.ca/blog/how-to-dynamically-add-radio-buttons/