日期选择器对话框阴影的白色背景
white background for date picker dialog shadow
我将日期选择器添加到我的应用程序,但我的问题是对话框的阴影有白色背景,请使用 Android 21 进行编译。
请帮我去掉白色背景...
您的 themes.xml
或 styles.xml
中有一个 "bug" material 设计支持库无法与对话框一起正常工作。
所以删除特定的对话框代码或将其分开在不同的版本中。
尝试进一步解释。
通常当我们扩展原始应用程序主题时,我们在 values
文件夹下有一个 themes.xml
and/or styles.xml
文件。在那里的代码中你会发现类似这样的东西:
应用主题:
<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>
需要定制的是MyTheme.Dialog
的parent
这个Theme.
AppCompat
.Light.Dialog
没有适用于所有 android 版本它可能适用于 Lollipop 但不适用于 KitKat,反之亦然。
- 通过在每个平台上简单地 运行 应用程序,您可以轻松地找出它适用于哪个版本。
- 然后您可以为
values-v21
创建一个不同的文件夹并相应地定义对话框的父级,以便它适用于两个版本。
您可以应用一些其他关于样式自定义的解决方法,以使其起作用。
如果您想进一步研究或主题定制想法,请查看 android theme.xml here.
的来源
我遇到了同样的问题,
我完成的第一个解决方案:
我最终在 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
来完成。我们没有使用很多样式,所以还可以。
在默认样式中添加新样式(不是 style-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>
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();
可能会迟到,但会有所帮助。
您必须为对话框添加透明背景。执行此操作的方法如下:
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));
}
};
对我来说,将 window 背景设置为透明没有帮助,这使得 all 我的 datePicker 对话框不仅丑陋的边框透明..: (
对我有帮助的是将常规背景也设置为我想要的颜色,并将 window背景设置为透明。
这是我的风格:
<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>
我将日期选择器添加到我的应用程序,但我的问题是对话框的阴影有白色背景,请使用 Android 21 进行编译。
请帮我去掉白色背景...
您的 themes.xml
或 styles.xml
中有一个 "bug" material 设计支持库无法与对话框一起正常工作。
所以删除特定的对话框代码或将其分开在不同的版本中。
尝试进一步解释。
通常当我们扩展原始应用程序主题时,我们在 values
文件夹下有一个 themes.xml
and/or styles.xml
文件。在那里的代码中你会发现类似这样的东西:
应用主题:
<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>
需要定制的是MyTheme.Dialog
的parent
这个Theme.
AppCompat
.Light.Dialog
没有适用于所有 android 版本它可能适用于 Lollipop 但不适用于 KitKat,反之亦然。
- 通过在每个平台上简单地 运行 应用程序,您可以轻松地找出它适用于哪个版本。
- 然后您可以为
values-v21
创建一个不同的文件夹并相应地定义对话框的父级,以便它适用于两个版本。
您可以应用一些其他关于样式自定义的解决方法,以使其起作用。
如果您想进一步研究或主题定制想法,请查看 android theme.xml here.
的来源我遇到了同样的问题,
我完成的第一个解决方案:
我最终在 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
来完成。我们没有使用很多样式,所以还可以。
在默认样式中添加新样式(不是 style-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>
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();
可能会迟到,但会有所帮助。
您必须为对话框添加透明背景。执行此操作的方法如下:
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));
}
};
对我来说,将 window 背景设置为透明没有帮助,这使得 all 我的 datePicker 对话框不仅丑陋的边框透明..: (
对我有帮助的是将常规背景也设置为我想要的颜色,并将 window背景设置为透明。 这是我的风格:
<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>