gpt4 book ai didi

Android TimePickerDialog 样式指南/文档?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:50:15 24 4
gpt4 key购买 nike

我正在尝试为 sdk 21+ (Lollipop) 设置 TimePickerDialog 的样式。到目前为止,我已经弄清楚如何更改 XML 中的默认配色方案:

<style name="TimePickerTheme" parent="@style/Theme.AppCompat.Light.Dialog">
<item name="colorPrimary">#ff2d6073</item> <!-- no effect -->
<item name="colorPrimaryDark">#ff2d6073</item> <!-- no effect -->
<item name="colorAccent">#ff2d6073</item>
<item name="android:textColor">#ffD0D102</item>
<item name="android:textColorPrimary">#ffD0D102</item>
</style>

这行得通,但我正在寻找有关我可以更改的所有属性的指南或文档。

  • AccentColor 做基本的配色方案
  • TextColorPrimary 做文字颜色

但是什么属性,例如,我需要更改对话框“标题”中的大文本(显示当前选定时间的位置)?

是否有一些文档列出了您可以更改的所有可能内容?

最佳答案

在深入研究 AOSP 主题和样式 xml 文件并进行大量谷歌搜索后,我取得了一些进展。我现在可以设计大多数(!)事物的样式。

所以这是一个部分答案,还没有完全解决。但这是我得到的结果:

enter image description here

您可以看到我现在可以为标题、未(!)选择的时间部分(在本例中为分钟)、圆圈、圆圈中的数字和“手”(或选择器)设置主题。哦,按钮也有样式。

首先让我解释一下我是如何让这些东西工作的:重要的是你不能直接从你的应用程序主题或(警告)对话框主题/样式中覆盖东西。你必须从一个到下一个,可以这么说。

例子:

AndroidManifest.xml:为应用和/或 Activity 设置自定义主题

<activity>
android:theme="@style/Theme.MyTheme"
</activity>

values-v21/styles.xml:(您的自定义主题所在的位置):设置 timePickerDialogTheme

<style name="Theme.MyTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:timePickerDialogTheme">@style/TimePickerDialogTheme</item>
</style>

然后在下面,定义 timePickerDialogTheme 并设置 timePickerStyle:

<style name="TimePickerDialogTheme" parent="@style/Theme.AppCompat.Light.Dialog">
<item name="colorAccent">#ff2d6073</item> <!-- colorAccent here seems to work just fine? -->
<item name="android:timePickerStyle">@style/TimePickerDialogStyle</item>
</style>

现在您可以在这里定义大部分样式..

<style name="TimePickerDialogStyle" parent="@android:style/Widget.Material.Light.TimePicker">

<item name="colorAccent">#ff2d6073</item> <!-- colorAccent here seems to work just fine? -->

<item name="android:timePickerMode">clock</item>
<item name="android:headerBackground">#ff2d6073</item>
<item name="android:headerTimeTextAppearance">@style/TextAppearance.TimePickerDialogStyle.TimeLabel</item> <!-- TimePicker Time *TextAppearance* -->
<item name="android:numbersTextColor">#ff000000</item>
<item name="android:numbersSelectorColor">#ff2d6073</item>
<item name="android:numbersBackgroundColor">#ffdddddd</item>

</style>

上面重要的一行是:

<item name="android:headerTimeTextAppearance">@style/TextAppearance.TimePickerDialogStyle.TimeLabel</item>

因为如果你想在标题中设置文本(实际上是时间)的样式,你需要定义标题时间文本外观:

<style name="TextAppearance.TimePickerDialogStyle.TimeLabel" parent="@android:style/TextAppearance.Material">

<item name="android:textSize">60sp</item> <!-- from -->
<item name="android:textColor">#ffD0D102</item>

</style>

现在,如果您看一下 Widget.Material.TimePicker in AOSP styles.xml (ctrl-f 'timepicker' 直到你找到它)你会注意到一堆你应该能够修改的其他属性:

headerTimeTextAppearance
headerAmPmTextAppearance
headerSelectedTextColor
headerBackground
numbersTextColor
numbersBackgroundColor
amPmTextColor
amPmBackgroundColor
amPmSelectedBackgroundColor
numbersSelectorColor

这些中的大部分工作(只要你为他们中的每一个添加'android:')但是我无法让'headerSelectedTextColor'工作。我收到一个编译错误,提示类似“无法匹配属性 bla bla”之类的内容。此外,如果您查看我上面的示例,我会为“headerTimeTextAppearance”属性对 textSize 进行硬编码,因为“@dimen/timepicker_ampm_label_size”值会引发错误。

简而言之:上面列出了大部分内容以及如何让它们工作。但并非一切都清楚。所以我仍然会看到完整的文档/指南 :)

关于Android TimePickerDialog 样式指南/文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32678968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com