我将datepicker添加到我的应用程序但是我的问题是对话框的阴影有白色背景,使用Android 21进行编译。
请帮我删除白色背景......
答案 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.xml
或styles.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.Dialog
此Theme.
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));
}
};