与活动风格不同的日期选择器

Posted

技术标签:

【中文标题】与活动风格不同的日期选择器【英文标题】:datepicker with different style than activity 【发布时间】:2014-01-17 01:52:30 【问题描述】:

我有自定义样式的活动,我希望我的活动带有自定义标题栏,所以我创建了以下样式:

<style name="costum_titlebar">
    <item name="android:background">@color/titlebar_background</item>
</style>

<style name="CustomTheme" parent="android:Theme">
    <item name="android:windowTitleSize">@dimen/titlebar_size</item>
    <item name="android:windowTitleBackgroundStyle">@style/costum_titlebar</item>
</style>

在清单中我使用:

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/CustomTheme" >

在我使用的活动中:

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
this.getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.setting_activity_titlebar);

到目前为止,它很好并且工作正常,我的自定义标题栏有活动。 现在我想使用 datePickerDialog。问题是对话框看起来很旧:

但我希望它看起来像这样:

我也有这种风格:

<style name="AppBaseTheme" parent="android:Theme.Light">

所以我用它来创建 DatePickerDialog 这样的:

new DatePickerDialog(getActivity(),R.style.AppBaseTheme, this, year, month, day);

但主题不适用。

只是为了测试,我创建了第二个具有默认样式的应用程序,只有一个按钮来打开日期选择器,所以日期选择器 看起来像我想要的。两个应用都有android:minSdkVersion="8"

我认为问题出在自定义标题栏上,那么如何获得具有所需样式的自定义标题栏和日期选择器?

编辑:

我变了android:minSdkVersion="11"&lt;style name="datePickerTheme" parent="@android:style/Widget.Holo.DatePicker"&gt;&lt;/style&gt;new DatePickerDialog(getActivity(),R.style.datePickerTheme, this, year, month, day);

但结果还是一样。

【问题讨论】:

API 级别 11 及以上支持主题全息,您不能在 11 以下应用它 @UsmanKurd:我知道,但是正如您在第二个应用程序中看到的 android:minSdkVersion="8" 和 android:Theme.Light,主题应用没有问题,我可以发布 .apk给你 @UsmanKurd:好的,我测试过了。第二个应用在 pre 11 api 上看起来很旧,在较新的 api 上看起来很新。但这不会发生在我的第一个应用程序上,它在两个 api 上看起来都很旧。 【参考方案1】:

我知道这有点晚了,但我在搜索有关 DatePickers 的其他内容时进入了这个主题。

将此添加到您正在使用的自定义主题中:

<item name="android:datePickerStyle">@android:style/Widget.DatePicker</item>

这将覆盖您正在使用的父主题,并导致外观不同的 DatePicker。

您需要使用此自定义主题创建对话框。

我的主题示例:

<style name="CustomTheme" parent="@android:style/Theme.Holo.Light">
    <item name="android:actionBarStyle">@style/MyActionBar</item>
    <item name="android:actionBarTabStyle">@style/MyActionBarTabStyle</item>
    <item name="android:actionBarTabTextStyle">@style/MyActionBarTabText</item>
    <item name="android:actionButtonStyle">@style/MyActionBarButtonStyle</item>
    <item name="android:actionMenuTextColor">#ffffff</item>
    <item name="android:windowBackground">@drawable/bg</item>
    <item name="android:datePickerStyle">@android:style/Widget.DatePicker</item>
</style>

【讨论】:

对于那些不太熟悉主题的人,如果您想使用具有所需样式的日期选择器的活动没有主题,您将在styles.xml中放置一个自定义主题,使用上述格式的代码,以及在清单中该活动的条目中,您将添加行 android:theme="@style/&lt;Your.Theme&gt;",当然,用您在 styles.xml 中调用的主题替换 Your.Theme。【参考方案2】:

试试这样:

style="@android:style/Widget.DatePicker"

【讨论】:

【参考方案3】:
DatePickerDialog dateDialog = new DatePickerDialog(getActivity(),
                                                   android.R.style.Theme_Holo_Light_Dialog,
                                                   ondateSet, year, month, day);
dateDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

这是用于显示白色光背景的日期选择器片段。

【讨论】:

以上是关于与活动风格不同的日期选择器的主要内容,如果未能解决你的问题,请参考以下文章

android MD 日期选择器,时间选择器

java 时间选择器,NumberPicker风格,2列,日期带今天,明天,星期,时间间隔30分钟

material风格的日期/时间选择:SublimePicker

在日期选择器中选择日期后如何打开时间选择器

将mysql日期转换为日期时间选择器

如何在日期选择器对话框中设置日期限制