AlertDialog文本颜色和边距

时间:2015-02-18 09:25:28

标签: android android-layout android-dialog android-dialogfragment android-styles

我定位API级别8+。我需要一个带标题,消息,带有一些文本和两个经典底部按钮的复选框的对话框。 我尝试使用标准的AlertDialog和方法setView来添加复选框:

checkbox.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/frame_checkbox"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp" >

    <CheckBox
        android:id="@+id/checkbox"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:checked="true"
        android:textSize="14sp" >
    </CheckBox>

</FrameLayout>

showDialog方法

private void showDialog() {
    AlertDialog.Builder builder = new AlertDialog.Builder(activity);

    builder.setTitle("Title");
    builder.setMessage("Message");

    View checkboxView = View.inflate(activity, R.layout.checkbox, null);
    CheckBox checkBox = (CheckBox) checkboxView.findViewById(R.id.checkbox);
    checkBox.setText("Some checkbox text");
    builder.setView(checkboxView);

    // First button
    builder.setNegativeButton(getString(R.string.not_now),
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {

            });

    // Second button
    builder.setPositiveButton(getString(R.string.help),
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
            });

    builder.create();
    builder.show();
}

我的AppBaseTheme有父母&#34; Theme.AppCompat.Light&#34; (/res/values/styles.xml),对于值-v11和&#34; Theme.AppCompat.Light.DarkActionBar&#34;对于值-v14。 我在2.3.3中遇到问题,复选框和文本没有边距或填充(我已将它们设置为xml),此外文本以黑色为背景。 4.4中的一切看起来都很好。 我已经阅读了很多关于这个问题的内容,但我仍然感到困惑,没有解决方案。你能帮我吗?

1 个答案:

答案 0 :(得分:0)

您可以使用以下方法强制对话框的白色背景:

if(Build.VERSION.SDK_INT <= 10) {
    builder.setInverseBackgroundForced(true);
}