日期选择器对话框阴影的白色背景

时间:2015-03-07 20:15:03

标签: android material-design android-datepicker

我将datepicker添加到我的应用程序但是我的问题是对话框的阴影有白色背景,使用Android 21进行编译。

请帮我删除白色背景......

enter image description here

6 个答案:

答案 0 :(得分:4)

我遇到了同样的问题,

我做过的第一个解决方案:
我最终在DatePickerDialog构建器中提供了这个主题。重要的是windowBackground设置为透明。

<style name="Theme.Yp.DatePicker" parent="@android:style/Widget.DeviceDefault.DatePicker">
        <item name="android:textColor">@color/color_accent</item>
        <item name="android:windowBackground">@color/transparent</item>
        <item name="android:gravity">center</item>
    </style>

第二个也是最终解决方案:
我完成了使用DatePickerDialog.THEME_DEVICE_DEFAULT_LIGHT工作得很好。我们没有使用很多样式,所以没关系。

答案 1 :(得分:1)

你有一个&#34; bug&#34;您的themes.xmlstyles.xml材料设计支持库中的对话框无效。

因此,请删除特定的对话框代码或将其分隔为不同的版本。


尝试进一步解释。

通常,当我们扩展原始应用程序主题时,themes.xml文件夹下会有styles.xml和/或values个文件。在那里你可以找到类似的代码:

应用主题:

<style name="MyTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <!-- ... other styling values ...  -->

    <!-- Dialog attributes -->
    <item name="dialogTheme">@style/MyTheme.Dialog</item>
    <!-- AlertDialog attributes -->
    <item name="alertDialogTheme">@style/MyTheme.Dialog</item>

    <!-- ... other styling values ...  -->
</style>

自定义对话框主题:

<style name="MyTheme.Dialog" parent="@style/Theme.AppCompat.Light.Dialog">
    <!-- some styling values here -->
</style>

需要自定义的是parent MyTheme.DialogTheme. AppCompat .Light.Dialog无法自定义适用于所有Android它可能适用于Lollipop,但不适用于KitKat,或相反。

  • 通过在每个平台上简单运行应用程序,您可以轻松找到它的工作版本。
  • 然后,您可以为values-v21创建一个不同的文件夹,并相应地定义对话框的父级,以便它适用于两个版本。

您可以应用其他有关样式自定义的解决方法,以便使其正常工作。

如果您想进一步研究或主题定制想法,请查看android theme.xml here的来源。

答案 2 :(得分:1)

对我来说,将窗口背景设置为透明没有帮助,这使得所有我的datePicker对话框透明,不仅是丑陋的边框.. :(

帮助我的是将常规背景设置为我想要的颜色并将windowBackground设置为透明。 这是我的风格:

 <style name="pickerDialogDark" parent="Theme.AppCompat.Dialog">
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:background">?attr/dialogBackground</item>
        <item name="android:textColor">@color/colorSimpleGreen</item>
        <item name="colorAccent">@color/colorGreen</item>
        <item name="colorPrimaryDark">@color/colorBlack</item>
        <item name="android:textColorSecondary">@color/colorSimpleGreen</item>
        <item name="android:headerBackground">?attr/dialogBackground</item>
    </style>

答案 3 :(得分:0)

在默认样式(不是样式-21)中添加新样式

 <style name="Your style" parent="@android:style/Widget.DeviceDefault.DatePicker">
 <item name="android:textColor">@color/app__primary_color</item>
 <item name="android:windowBackground">@android:color/transparent</item>
 <item name="android:gravity">center</item>
 <item name="android:layout_gravity">center</item>

答案 4 :(得分:0)

DatePickerDialog dialog = new DatePickerDialog(mContext, android.R.style.Theme_Holo_Light_Dialog_NoActionBar, mDateSetListener, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DATE));
dialog.getWindow().setBackgroundDrawableResource(R.color.transparency);
dialog.show();

答案 5 :(得分:0)

可能会迟到但会有所帮助。

您必须添加对话框的透明背景。以下是如何做到这一点:

DatePickerDialog dpd = new DatePickerDialog(this, android.R.style.Theme_Holo_Dialog, reservationDate, 2014, 1, 1)
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    }
};