【问题标题】:Change DatePicker header text color更改 DatePicker 标题文本颜色
【发布时间】:2017-07-11 01:58:21
【问题描述】:

我有一个日期选择器,它在 Lollipop 上显示标题,它看起来像这样

我想要么将标题中大日期的颜色从黑色更改为白色,要么完全删除标题,我不在乎。我试过更改textColorPrimarytextColortitleTextColor,但没有效果。

【问题讨论】:

标签: android datepicker android-styles datepickerdialog


【解决方案1】:

试试这个,它可能对你有帮助:

将您的styles.xml 编辑为:

<style name="DialogTheme" parent="Theme.AppCompat.Light.Dialog">
       <item name="colorAccent">@color/white</item>
</style>

并在您的代码中添加以下行:

new DatePickerDialog(MainActivity.this, R.style.DialogTheme, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
    //DO SOMETHING
  }
}, 2015, 02, 26).show();

【讨论】:

  • colorAccent 不会更改标题文本颜色,只会更改 OK 和 CANCEL 按钮以及日历中当前选定的日期(即现在的绿松石色)。
【解决方案2】:

我可以更改标题中的日期颜色,为我的 datePicker DialogFragment 提供自定义主题 CustomDatePickerDialogTheme

<style name="CustomDatePickerDialogTheme" parent="Theme.AppCompat.Light.Dialog">
    <item name="android:datePickerStyle">@style/CustomDatePickerStyle</item>
</style>

<style name="CustomDatePickerStyle" parent="@android:style/Widget.Material.Light.DatePicker">
    <item name="android:headerMonthTextAppearance">@style/HeaderTextStyle</item>
</style>

<style name="HeaderTextStyle" parent="@android:style/TextAppearance.Medium">
    <item name="android:textColor">@color/colorAccent</item>
</style>

【讨论】:

  • 刚刚试了一下,colorAccent(我已经设置为#ff00ff 很明显)没有出现在任何地方
  • 如何将CustomDatePickerDialogTheme 设置为对话框?
  • 我不明白这个问题。我复制了你写的只是为了测试它。 HeaderTextStyle 正在生效(将TextAppearance.Medium 更改为TextAppearance.Large 会更改字体大小),但颜色会被忽略。
  • 好的,谢谢,我想确保主题设置正确,但很明显它是
【解决方案3】:

好吧,我不知道您的日期选择器主题的 主题是什么。假设您的日期选择器有一个自定义主题,如下所示,

 <style name="yourCustomStyle" parent="Theme.AppCompat.Light">

现在 Ctrl + 点击 Theme.AppCompat.Light 这将引导您进入一种新方式;)您可以在其中找到您正在寻找的内容,这意味着您的问题只是关于标题文本,但您可能希望更改其他视图颜色,因此您需要查看一下。

作为答案,创建一个如下所示的自定义主题,并使用您喜欢的颜色添加此属性

android:textColorPrimaryInverse

应该为您解决问题。

   <style name="yourCustomStyle" parent="Theme.AppCompat.Light">
        <item name="colorAccent">@color/blue</item>
        <item name="android:textColorPrimaryInverse">@color/yellow</item>
        .. other
    </style>

随意使用您自己的颜色和代码(我从this复制代码),它会完成这项工作!

new DatePickerDialog(MainActivity.this, R.style.yourCustomStyle, new DatePickerDialog.OnDateSetListener() {
    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
      
    }
}, 2015, 02, 26).show();

图像:带有 Theme.AppCompat.Dialog 的 android:textColorPrimaryInverse

【讨论】:

  • 是的,就是这样。我不明白我应该如何找到要更改的内容(Ctrl+click 向我显示了一个巨大的列表并且没有提到 datepicker),但重要的是这看起来是我想要的样子。谢谢!
  • 如果有人想知道年份更改为textColorSecondaryInverse
  • @TimSim 是的,它是一个巨大的列表,稍微滚动一下,有一个颜色部分,如果您不知道属性,您可以复制整个颜色集更改它们的颜色并查看差异,否则您需要使用android开发者网站一一浏览并获得一个好主意!
【解决方案4】:

您可以按照以下步骤更改 DateTimePicker 标题和正文背景:

  1. 转到android/app/src/main/res/values/styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
   <item name="android:textColor">#000000</item>

 **Add these two files !!!**

    <item name="android:timePickerDialogTheme">@style/ClockTimePickerDialog</item>
    <item name="android:datePickerDialogTheme">@style/DialogDatePicker.Theme</item>
</style>

 **Add these files also** 

<style name="DialogDatePicker.Theme" parent="Theme.AppCompat.DayNight.Dialog">
    <item name="colorAccent">#000000</item>
</style>

<style name="ClockTimePickerDialog" parent="Theme.AppCompat.Light.Dialog">
    <item name="colorAccent">#000000</item>
    <item name="android:textColorPrimary">#000</item>
</style>

【讨论】:

    【解决方案5】:

    Kotlin,2021 年

    // set date as button text if pressed
    btnDate.setOnClickListener(View.OnClickListener {
    
        val dpd = DatePickerDialog(
            this,
            { view, year, monthOfYear, dayOfMonth ->
                val selectDate = Calendar.getInstance()
                selectDate.set(Calendar.YEAR, year)
                selectDate.set(Calendar.MONTH, monthOfYear)
                selectDate.set(Calendar.DAY_OF_MONTH, dayOfMonth)
    
                var formatDate = SimpleDateFormat("dd/MM/yyyy", Locale.getDefault())
                val date = formatDate.format(selectDate.time)
                Toast.makeText(this, date, Toast.LENGTH_SHORT).show()
                btnDate.text = date
            }, 1990, 6, 6
        )
    
        val calendar = Calendar.getInstance()
        val year = calendar[Calendar.YEAR]
        val month = calendar[Calendar.MONTH]
        val day = calendar[Calendar.DAY_OF_MONTH]
        dpd.datePicker.minDate = GregorianCalendar(year - 90, month, day, 0, 0).timeInMillis
        dpd.datePicker.maxDate = GregorianCalendar(year - 10, month, day, 0, 0).timeInMillis
        dpd.show()
    })
    

    Styles.xml

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- This is main Theme Style for your application! -->
        <item name="android:datePickerDialogTheme">@style/MyDatePickerDialogTheme</item>
    </style>
    
    <style name="MyDatePickerDialogTheme" parent="android:Theme.Material.Dialog">
        <item name="android:datePickerStyle">@style/MyDatePickerStyle</item>
    </style>
    
    <style name="MyDatePickerStyle" parent="@android:style/Widget.Material.DatePicker">
        <item name="android:headerBackground">#A500FF</item>
    </style>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多