我遇到奇怪的情况:当我按代码放置复选框时,它有不同的样式,然后由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的复选框和代码中的几个复选框。 屏幕如下所示:
所以我的问题是:
答案 0 :(得分:1)
动态添加视图的样式取决于上下文。在您的情况下,上下文是您的活动,因此添加的视图的样式是您的活动样式。如果您没有为活动设置主题,那么它是您在styles.xml中定义的应用程序的主题。例如:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
</style>
您很可能从不同的上下文中夸大了xml布局。如果您从与添加的视图相同的上下文中对其进行充气,则视图应具有相同的样式。试着检查一下。
您还可以在xml中为一个视图设置样式:
<View
style="@style/Example" />