Android TimePickerDialog 样式指南/文档?

2024-04-19

我正在尝试为 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 文件并进行大量谷歌搜索后,我取得了一些进展。我现在可以设计大多数(!)东西的样式。

所以这只是部分答案,还没有完全实现。但这是我所取得的进展:

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

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

Example:

AndroidManifest.xml:为应用程序和/或活动设置自定义主题

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

值-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>

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

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

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

</style>

现在,如果你看一下AOSP styles.xml 中的 Widget.Material.TimePicker https://android.googlesource.com/platform/frameworks/base/+/lollipop-release/core/res/res/values/styles_material.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”值会引发错误。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android TimePickerDialog 样式指南/文档? 的相关文章

  • 使用mac或windows的QPython开发环境

    刚接触QPython 没有找到任何参考资料 最终在 Mac 或 PC 上进行开发 在 Android 设备上部署代码 与在 Android 设备上开发代码本身相比 这似乎非常尴尬 特别是对于较大的项目 我希望使用 普通 IDE 例如 Int
  • 安卓卸载通知

    当用户卸载应用程序时有什么方法可以发送通知 如果用户卸载该应用程序 应用程序所有者应该收到以下用户已卸载该应用程序的通知 是否可以 应用程序本身不可能 除非有来自同一作者的其他应用程序可以检查 但我认为有一个可用但复杂的解决方法 应用程序可
  • 使用 Android NDK 使用 -fsigned-char 进行构建安全吗?

    为了与其他平台保持一致 我需要使用signed char在我正在处理的一些本机代码中 但默认情况下在Android NDK上char类型是unsigned 我尝试明确使用signed char类型 但它生成太多警告differ in sig
  • 如何从命令行向 Android 项目添加外部 jar 库

    我正在尝试构建一个具有一些依赖项的 Android 项目 jar 文件位于 lib 目录中 我可以通过将这些 jar 文件添加到我的类路径来构建项目 但当然它会在模拟器中强制关闭 因为这些库不存在 我正在使用 ant 从命令行执行此操作 n
  • 当应用程序崩溃时,Android Studio ADB 会清除 logcat 文件!哦美伊

    刚刚升级了最新的Android Studio 现在 当应用程序崩溃时 日志文件 adb logcat 就会消失 它不仅停止记录整个日志似乎突然被删除了 对于调试来说不太酷 我需要设置日志缓存大小或其他什么吗 还注意到调试器需要很长时间来收集
  • android studio 中 xml 文件的设计预览无法“打开”

    我在制作一个 Android 项目时遇到了一个问题 更新 android studio 后 我的 xml 文件之一设计预览将无法打开 我收到 2 个错误 我已经寻找了解决方案 并且已经尝试了很多我在网上找到的东西 但都没有改变这种情况 第一
  • 从片段调用片段

    我想通过单击当前片段中的按钮来调用当前片段中的另一个片段 这是我的主要活动 import android app FragmentManager import android os Bundle import android support
  • 此版本的渲染库比您的 ADT 插件版本更新。请更新ADT插件 - 已经更新

    在 Eclipse 上 尽管我使用的是最新的 adt 版本 但我收到此错误 我不确定它是否相关 但这发生在我安装 android m sdk 之后 从这里 https stackoverflow com a 30535515 933050
  • 罐子不匹配!修复使用 appcompat_v7 和 Facebook sdk 时的依赖关系。

    我在我的项目中使用 appcompat v7 库和 facebook sdk 并且这两个库都有 android support v4 jar 如果我删除任何 jar 则相应的库将无法工作 并且不允许同时拥有这两个 jar 我应该怎么办 请帮
  • Android ImageView未加载

    我正在使用 android imageView 并将图像放入可绘制文件夹中 并将 imageView 源更改为该图像 但它没有在预览面板中显示图像 当我在 android studio 中打开图片时 它显示这样的错误 但我可以在电脑桌面上打
  • 浮动操作按钮未显示在 recyclerview 上(位于 DrawerLayout 内)

    我正在尝试通过 recyclerview 获取 FAB 在我的情况下 它将覆盖整个屏幕 即使 recyclerview 为空 FAB 也不会显示 以下是我的 xml 代码
  • 如何在 Google Play 商店发布之前测试 google play Referrer api?

    Google 于 2017 年 11 月 20 日宣布推出 Google Play Referrer API 作为跟踪应用安装的新方法 我的问题是 在我的应用程序在 Google Play 上发布之前 有什么方法可以测试该功能吗 您无需上传
  • 如何单击 TableLayout 中的特定 TableRow

    我制作了自己的复合控件 该控件使用 TableLayout 显示数据网格 并根据绑定到它的对象数组以编程方式在循环内添加 Tablerows 现在我想选择具有特定数据的特定行 以便由一个方法 那么我如何选择检索其数据的特定行来委托方法呢 你
  • 使用“adb devices”命令无法找到 Android 设备

    我正在开发Android申请于macOS我的应用程序在模拟器上运行良好 我想在设备上运行它 但是当我运行时adb devices我什么也没得到 localhost platform tools BF adb devices List of
  • 创建一个覆盖视图以覆盖整个活动,包括协调器布局中的工具栏

    我想创建一种覆盖类型的布局 以显示在包括工具栏在内的活动上方 我无法使用任何库来执行此操作 因为我编写的所有内容都是自定义的 我可以通过使用以下代码直接将视图添加到装饰视图来实现它 ViewGroup vg ViewGroup getWin
  • ACTION_SEND 强制通过电子邮件发送

    每次我创建一个从应用程序发送电子邮件的操作时 它都会提示许多选项 包括 QR 客户端 有没有办法强制仅通过电子邮件客户端发送 发送电子邮件的代码 String rec owner email i new Intent Intent ACTI
  • android中textview截断一个字母

    这是我的 Android 设备的屏幕截图 文字是 asd 然而 d 被稍微切断了 这是相关视图
  • 如何在Android中将外部jar文件包含到aar文件中

    我想开发一个解决方案 允许我在 Android 项目的 aar 文件中生成的 SDK 中使用外部 jar 库 我有什么输入 SDK de xx sdk xxx android v1 0 0 外部库 libs xxxx v1 0 0 我在调查
  • Android 数据库(SQLite)从空表返回非空游标

    我使用 SQLite 数据库浏览器验证该表不包含任何行 我单步执行查询生成器代码来获取生成的查询 并在 SQLite 数据库浏览器中运行该查询 查询返回零行 但是 Android 的 SQLiteQueryBuilder query 方法返
  • 如何在react-native应用程序中禁用屏幕截图?

    我已经使用react native制作了一个移动应用程序 目前只有android 它不是博览会应用程序 我想禁止用户在应用程序打开时截取屏幕截图 我知道不可能完全禁用此功能 但我想让至少更难截取屏幕截图 我找到了一些例子 但我不知道如何实现

随机推荐