为什么从Android Studio设计器添加的组件看起来与运行时添加的组件不同?

时间:2017-09-19 20:33:28

标签: android android-studio

我很好奇为什么会这样。我在设计器中添加了2个复选框

<CheckBox
    android:id="@+id/checkBox5"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="CheckBox" />

<CheckBox
    android:id="@+id/checkBox4"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="CheckBox" />

并在运行时添加了一些

for (String category : userData.getFilters().getCategories().keySet()) {
            CheckBox box = new CheckBox(getContext()); // getActivity() gives same result, after all activit == context here
            box.setTag(category);
            box.setText(category);
            categoriesContainer.addView(box);
        }

他们看起来像这样:

enter image description here

为什么?

1 个答案:

答案 0 :(得分:1)

首先,我认为您不是在创建 AppCompatCheckBox ,而是CheckBox

AppCompatCheckBox应该有用 -

AppCompatCheckBox checkBox = new AppCompatCheckBox(context);

旁注:

Android support v22.1 library之前,如果您动态创建组件,则他们不会选择材料设计主题。

但是从v22.1 support library及以上,这是有效的。您应该使用CheckBox中的support library,它将使用材料主题,该主题用于通过XML创建的组件。