与活动风格不同的日期选择器
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"
与<style name="datePickerTheme" parent="@android:style/Widget.Holo.DatePicker"></style>
和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/<Your.Theme>"
,当然,用您在 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));
这是用于显示白色光背景的日期选择器片段。
【讨论】:
以上是关于与活动风格不同的日期选择器的主要内容,如果未能解决你的问题,请参考以下文章
java 时间选择器,NumberPicker风格,2列,日期带今天,明天,星期,时间间隔30分钟