Android 代码添加的复选框外观不正确?
Android checkboxes added by code don't have the right appearance?
我有一个非常基本的应用程序,我试图在其中插入动态复选框,我可以让它们出现,但它们没有以正确的样式显示。
见下文 - 根据定义,Foo 在 LinearLayout 中;正在以编程方式添加栏。 Foo 显示为灰色框用于检查,Bar 显示为白色框。
这是创建这些的代码:
for (Integer i=0; i < arArray.length;i++) {
CheckBox cb = new CheckBox(getApplicationContext());
cb.setText("Bar");
cb.setTextColor(getResources().getColor(android.R.color.black));
cb.setOnCheckedChangeListener(clListener);
llDeckChecks.addView(cb);
}
我已经尝试将可绘制对象设置为一些 android.R.drawable 类型,但是没有任何东西与 Foo 复选框匹配,所以我现在完全被难住了。
使用 cb.setButtonDrawable(R.drawable.cbOutline);
,其中 "cbOutline" 是您在 XML 中定义的复选框轮廓的可绘制对象。
AppCompat 将默认小部件替换为有色、一致的样式,如 Android Support Library 22.1 blog post:
中所述
This is done automatically when inflating layouts - replacing Button
with AppCompatButton
, TextView
with AppCompatTextView
, etc. to ensure that each could support tinting.
如果您想以编程方式创建这些,您可以在代码中使用 AppCompatCheckBox 代替 Checkbox
,传入当前的 Context
,例如 [=16] =].
注意:不要使用 getApplicationContext()
非常重要,因为 没有所需的样式信息。
您应该使用 activity 上下文而不是应用程序上下文来创建按钮。如果您使用 getApplicationContext()
它不会扩展 ContextThemeWrapper
.
尝试改变
CheckBox cb = new CheckBox(getApplicationContext());
到
CheckBox cb = new CheckBox(YourActivity.this); // or getActivity() if in a fragment.
我有一个非常基本的应用程序,我试图在其中插入动态复选框,我可以让它们出现,但它们没有以正确的样式显示。
见下文 - 根据定义,Foo 在 LinearLayout 中;正在以编程方式添加栏。 Foo 显示为灰色框用于检查,Bar 显示为白色框。
这是创建这些的代码:
for (Integer i=0; i < arArray.length;i++) {
CheckBox cb = new CheckBox(getApplicationContext());
cb.setText("Bar");
cb.setTextColor(getResources().getColor(android.R.color.black));
cb.setOnCheckedChangeListener(clListener);
llDeckChecks.addView(cb);
}
我已经尝试将可绘制对象设置为一些 android.R.drawable 类型,但是没有任何东西与 Foo 复选框匹配,所以我现在完全被难住了。
使用 cb.setButtonDrawable(R.drawable.cbOutline);
,其中 "cbOutline" 是您在 XML 中定义的复选框轮廓的可绘制对象。
AppCompat 将默认小部件替换为有色、一致的样式,如 Android Support Library 22.1 blog post:
中所述This is done automatically when inflating layouts - replacing
Button
withAppCompatButton
,TextView
withAppCompatTextView
, etc. to ensure that each could support tinting.
如果您想以编程方式创建这些,您可以在代码中使用 AppCompatCheckBox 代替 Checkbox
,传入当前的 Context
,例如 [=16] =].
注意:不要使用 getApplicationContext()
非常重要,因为 没有所需的样式信息。
您应该使用 activity 上下文而不是应用程序上下文来创建按钮。如果您使用 getApplicationContext()
它不会扩展 ContextThemeWrapper
.
尝试改变
CheckBox cb = new CheckBox(getApplicationContext());
到
CheckBox cb = new CheckBox(YourActivity.this); // or getActivity() if in a fragment.