利用XML布局文件动态创建CheckBox

要动态创建CheckBox,一个比较好的考虑是:

单纯考虑设置组件的属性,XML布局文件无疑是最简单的方法。可以在XML布局文件中先配置一个或若干CheckBox,然后以这些配置为模板来动态创建CheckBox对象

这里先 定义一个String 数组,数组元素表示CheckBox的文本,然后根据String数组的元素个数来创建CheckBox对象

步骤如下:

1.  使用getLayoutInflater().inflate()方法来装载main.xml布局文件,并返回一个LinearLayout对象(linearLayout).

2.  使用getLayoutInflater().inflate()方法来装载checkbox.xml布局文件,并返回一个LinearLayout对象(checkboxLinearLayout).

3.  调用checkboxLinearLayout.findViewById()方法来获得CheckBox对象,并根据String数组中的值设置CheckBox的文本。

4.  调用linearLayout.addView()方法将checkboxLinearLayout添加到linearLayout中。

5.  根据String数组的元素重复第2,3,4 步,直到处理完String数组中的最后一个元素为止.

实现效果如图所示:

在onCreate()动态创建CheckBox对象的代码如下:

public void onCreate(Bundle bundle)  {
    super.onCreate(bundle);
    String[]  checkboxText = new String[]{"Android","iPhone","Windows Mobile","Symbian","Meego","BlackBeery","Palm"};
    //装载main.xml文件
   LinearLayout  linearLayout  = (LinearLayout)getLayoutInflater().inflate(R.layout.main,null);
   for(int i=0;i<checkboxText.length;i++)   {
       //装载checkbox.xml文件
       LinearLayout  checkboxLinearLayout =  (LinearLayout) getLayoutInflater().inflate(R.layout.checkbox,null);
       //获得checkbox.xml文件中的CheckBox对象
       checkboxs.add((CheckBox)checkboxLinearLayout.findViewById(R.id.checkbox));
       checkboxs.get(i).setText(checkboxText[i]);      //设置CheckBox的文本
       //将包含  CheckBox  的LinearLayout 对象添加到由主布局文件生成的LinearLayout 对象中
       linearLayout.addView(checkboxLinearLayout,i); 
   }
   setContentView(linearLayout);
   Button button = (Button) findViewById(R.id.button);
   button.setOnClickListener(this);
}

具体代码见  ch05_dynamiccheckbox工程

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
动态生成顶部对齐的 Checkbox,可以使用以下代码: ```java LinearLayout linearLayout = findViewById(R.id.linear_layout); // 获取线性布局 for (int i = 0; i < 5; i++) { // 循环生成 Checkbox CheckBox checkBox = new CheckBox(this); // 创建 Checkbox checkBox.setText("选项 " + (i + 1)); // 设置 Checkbox 的文本 checkBox.setButtonDrawable(R.drawable.checkbox_top); // 设置 Checkbox 的样式 LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT ); // 创建布局参数 layoutParams.gravity = Gravity.TOP; // 设置布局参数的对齐方式为顶部对齐 linearLayout.addView(checkBox, layoutParams); // 将 Checkbox 添加到线性布局中,并设置布局参数 } ``` 其中,`checkbox_top` 是你定义的 Checkbox 的顶部对齐样式,可以在 `drawable` 文件夹下创建一个名为 `checkbox_top.xml` 的文件文件内容如下: ```xml <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/checkbox_checked" android:state_checked="true" android:state_pressed="false"/> <item android:drawable="@drawable/checkbox_unchecked" android:state_checked="false" android:state_pressed="false"/> <item android:drawable="@drawable/checkbox_checked_pressed" android:state_checked="true" android:state_pressed="true"/> <item android:drawable="@drawable/checkbox_unchecked_pressed" android:state_checked="false" android:state_pressed="true"/> </selector> ``` 这个文件定义了 Checkbox 的四种状态:选中未按下、未选中未按下、选中按下和未选中按下,对应的样式分别为 `checkbox_checked`、`checkbox_unchecked`、`checkbox_checked_pressed` 和 `checkbox_unchecked_pressed`。你可以根据自己的需要修改这些样式。 这段代码会生成 5 个顶部对齐的 Checkbox,每个 Checkbox 的文本分别为“选项 1”、“选项 2”、“选项 3”、“选项 4”和“选项 5”,并将它们添加到 LinearLayout 中。你可以根据自己的需要修改循环次数和 Checkbox 的文本。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值