什么样的动态添加了视图?

时间:2015-06-08 20:41:14

标签: android xml

我遇到奇怪的情况:当我按代码放置复选框时,它有不同的样式,然后由xml文件添加复选框。

这是动态添加复选框:

LinearLayout checkboxGroup = (LinearLayout) v.findViewById(R.id.category_checkbox_group);
for(String category : categories) {
    CheckBox checkBox = new CheckBox(getActivity());
    checkBox.setText("dynamically added");
    checkBox.setOnClickListener(mCategoryChecked);
    checkboxGroup.addView(checkBox);
}

xml片段:

        <LinearLayout
            android:id="@+id/category_checkbox_group"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:orientation="vertical">

            <CheckBox
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="xml added" />
        </LinearLayout>

所以我毕竟有一个xml的复选框和代码中的几个复选框。 屏幕如下所示:

enter image description here

所以我的问题是:

  1. 动态视图的默认样式是什么?
  2. 如何将此样式应用于xml的视图?
  3. 是一个在复选框中更改框的简单方法吗?

1 个答案:

答案 0 :(得分:1)

  1. 动态添加视图的样式取决于上下文。在您的情况下,上下文是您的活动,因此添加的视图的样式是您的活动样式。如果您没有为活动设置主题,那么它是您在styles.xml中定义的应用程序的主题。例如:

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    </style>
    
  2. 您很可能从不同的上下文中夸大了xml布局。如果您从与添加的视图相同的上下文中对其进行充气,则视图应具有相同的样式。试着检查一下。

  3. 您还可以在xml中为一个视图设置样式:

    <View
        style="@style/Example" />