覆盖按钮的文本颜色不起作用

2024-05-09

我使用每个按钮上的buttonBarStyle 和布局上的buttonBarButtonStyle 为按钮栏创建了一个自定义主题。 它工作正常,但我想更改按钮的文本颜色,但它仍然采用默认颜色(@android:color/primary_text_holo_light) 我的代码是:

<style name="ButtonBarTheme" parent="AppTheme">
        <item name="buttonBarStyle">?android:attr/buttonBarStyle</item>
        <item name="buttonBarButtonStyle">?android:attr/buttonBarButtonStyle</item>
        <item name="android:textColor">#ffffff</item>
</style>

对于布局:

<LinearLayout 
    style="?android:attr/buttonBarStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#0090cc"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/bar_button1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        style="@style/ButtonBarStyleButton"
        android:text="Button 1" />

    <Button
        android:id="@+id/bar_button2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        style="?android:attr/buttonBarButtonStyle"
        android:text="Button 2" />

</LinearLayout>

AppTheme 有父 AppBaseTheme,它有父 android:Theme.Holo.Light.DarkActionBar。

我需要做什么才能更改按钮的文本颜色?

EDIT:我尝试在每个元素上应用颜色并且它有效,但我想通过覆盖样式文件中的颜色来更改它(将所有设计属性保留在一处,类似于 CSS)。

另外,我尝试创建一个具有 ?android:attr/buttonBarStyle" 属性的样式

   <style name="ButtonBarStyleButtonBase">
        <item name="buttonBarButtonStyle">?android:attr/buttonBarButtonStyle</item>
    </style>

   <style name="ButtonBarStyleButton" parent="ButtonBarStyleButtonBase">
        <item name="android:textColor">#ffFFff</item>
    </style>

但它的行为很奇怪:颜色已更新,但父样式的属性不可见。


我想在这个答案的开头说我不完全理解按钮栏是什么。除了为它们定义一些样式属性之外,Android开发人员文档似乎没有提及它们,因此我不确定它们如何映射到实际的视图/小部件。

我相信发生的事情是您忽略了风格和主题之间的区别。样式应用于视图以定义其属性。主题应用于整个应用程序或单个活动,并提供为应用该主题的应用程序/活动中显示的视图定义默认样式的能力(除其他外)。

但更重要的是,Activity 仅使用诸如buttonBarStyle 和buttonBarButtonStyle 之类的属性来解析按钮栏和按钮栏中按钮的默认样式。因为这些属性仅由活动解析,所以如果直接应用于视图,它们将被忽略。

因此,如果您想使用主题来应用样式,则需要创建一个新的样式定义来扩展所需的基本样式,然后将该自定义样式分配回主题定义中相应的视图样式属性。

<style name="CustomButtonStyle" parent="@android:attr/buttonStyle">
        <item name="android:textColor">#ffffff</item>
</style>


<style name="AppTheme" parent="@android:style/Theme.Holo.Light.DarkActionBar">
        <item name="buttonStyle">@style/CustomButtonStyle</item>
</style>


<application
    ...
    android:theme="@style/AppTheme" >

所有没有显式样式属性的按钮现在都将显示为白色文本。

但是,对于想要显示具有 ButtonBar 样式的按钮的特殊情况,您应该注意 ButtonBar 样式不会自动应用于您的按钮。您必须手动定义要与该样式一起显示的按钮。因此,上面的示例现在看起来更像这样:

<style name="CustomButtonBarStyle" parent="@android:attr/buttonBarStyle">
        <item name="android:textColor">#ffffff</item>
</style>


<style name="AppTheme" parent="@android:style/Theme.Holo.Light.DarkActionBar">
        <item name="buttonBarStyle">@style/CustomButtonBarStyle</item>
</style>


<application
    ...
    android:theme="@style/AppTheme" >

现在应用您为当前主题定义的 ButtonBar 样式:

<Button
        ...
        style="?android:attr/buttonBarStyle"/>

请注意,这将应用为当前主题定义的 ButtonBar 样式(除非它被 Activity 覆盖,否则它将在整个应用程序中保持不变)。另请注意,由于您引用为当前主题定义的样式,因此它允许您根据所需的资源限定符以不同的方式定义当前主题,而无需更改布局代码。

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

覆盖按钮的文本颜色不起作用 的相关文章

  • 位图背景图像应支持哪些屏幕尺寸/密度组合?

    我正在编写一个应用程序 我需要一些全屏位图背景 基于我天真的阅读支持多屏 http developer android com guide practices screens support html在 Android 文档中 为了涵盖我的
  • Facebook4j API:搜索

    我正在使用 Facebook4j 通过关键字获取状态 facebook4j conf ConfigurationBuilder fac new facebook4j conf ConfigurationBuilder fac setDebu
  • 手机重置后AlarmManager闹钟不触发

    在我的应用程序中 用户加入一个计划 然后第二天中午会出现警报通知 这是我的代码 首先 我在 AlarmManager 中设置一个闹钟 如下所示 set alarm to the next day 12 00 noon of the join
  • Android:如何让设备只运行一个应用程序?

    我有一个客户项目 我必须制作单任务 Android 设备 客户无法逃脱我公司开发的应用程序 此外 客户无法启动任何其他应用程序 而我们的应用程序会在设备启动时启动 总体而言 客户能够使用设备执行的所有操作就是运行我们的应用程序 除了 roo
  • 使用Picasso从url保存图像?

    我正在尝试使用 API Picasso 保存图像 为了做到这一点 我正在尝试使用Target保存 但我无法完成这项工作 我怎么能这样做呢 Trying save image public static void imageDownload
  • 我如何从android中的复选框获取值

    我想获取复选框中所选项目的名称 但我只得到一些字母数字 如何从复选框中获取所选项目的名称 public View getView int position View convertView ViewGroup parent View vie
  • 如何将现有的 SQLite3 数据库导入 Room?

    好吧 我在桌面上使用 SQLite3 创建了一个只需要读取的某些信息的数据库 我正在制作的应用程序不需要在此表中插入或删除信息 我在 Room 数据库层上做了相当多的谷歌搜索 所有文档都需要在构建应用程序时在 Room 中创建一个新的数据库
  • org.apache.http.conn.HttpHostConnectException:在 android 中连接到 http://localhost 被拒绝

    我正在制作一个应用程序 在执行它时将图像上传到服务器并将其数据库更新到android中的服务器 它显示错误 Connection to http localhost refused 还有更多错误 我研究了这个问题 发现不是提供 URL 连接
  • 在没有 BluetoothManagerCallback 的情况下调用 getBluetoothService

    我正进入 状态getBluetoothService called with no BluetoothManagerCallback在我的 Android 应用程序中经常出现错误 我不知道是什么原因导致这个或任何有关蓝牙管理器回调的事情 谁
  • ProgressBar.setInminateDrawable() 不起作用

    当我尝试更改我的 indeteminateDrawable 进度条就消失了 我必须更改我的进度条的可绘制对象 我尝试了invalidate requestLayout等 我不知道如何解决它 谢谢 这里的代码 progressBar setI
  • Flutter - 删除 ListView 中项目之间的空间

    我正在使用 ListView builder 函数来创建项目列表 然而 iOS 中每个项目之间的空间很大 截图 你知道如何删除项目吗 看来是默认的 因为我没有添加它 code 列表显示 return Scaffold body ListVi
  • Android 媒体播放器搜索栏

    我有一个创建 播放和处理媒体播放器 只是音频 的服务 但我在主要活动中有一个搜索栏 我想自然地显示音频文件的进度并允许用户搜索到不同的位置 我花了很长时间才弄清楚 将 UI 中的搜索栏连接到服务中的媒体播放器的最佳或正确方法是什么 我将这样
  • 如何使用共享首选项在两个 Android 应用程序之间共享数据?

    我有两个应用程序 App1 和 App2 我想使用共享首选项在 App1 中保存数据并在 App2 中访问 反之亦然 我可以在 App1 中保存数据并在 App2 中访问数据 但反之则不行 这就是我现在正在做的 在清单中 android s
  • 分离 Fragment 和删除 Fragment 有什么区别?

    在 Android 文档中碎片交易 http developer android com reference android app FragmentTransaction html我注意到两种非常相似的方法 detach and remo
  • Android 10 请求 ACTIVITY_RECOGNITION 权限

    我试图遵守 Google 的要求 为 Android 10 请求 ACTIVITY RECOGNITION 权限 但我似乎不明白为什么没有显示权限弹出窗口 就像其他权限 即位置 存储等 一样 我的代码是 if ContextCompat c
  • 推特更新状态

    我正在通过 twitter4j 将 Twitter 集成到 Android 我可以成功阅读我发布的推文 现在我试图用它发布推文 但我不能 我收到如下奇怪的警告 02 01 16 28 43 298 WARN System err 729 4
  • 如何向开关对象添加/更改波纹效果

    下面是我自定义的开关 红圈是默认的波纹效果 我发现设置一个波纹可绘制作为开关的背景 控制波纹的颜色
  • 如何检测日期选择器对话框的取消单击?

    我正在使用以下 日期选择器的示例 http developer android com guide tutorials views hello datepicker html http developer android com guide
  • Android Studio 中自动打开“运行设备”选项卡

    在 Android Studio Flamingo 中有一个名为跑步设备并且它会在每次之后自动打开运行应用程序 有办法禁止这个自动打开吗 我尝试禁用启用物理 Android 设备的镜像选项 但选项卡仍然自动打开 基于此issue https
  • 如何减少 Android 中浮动 editText 提示和 editText 框之间的空间?

    我有一个带有浮动提示的 EditText 但我想知道如何减少浮动提示和 EditText 框之间的空间 现在我的用户界面看起来像https i stack imgur com ltfra jpg https i stack imgur co

随机推荐

  • Find() 的 Javascript 代码优化

    我有 C 代码 可以在 SQL 中运行查询并返回大约 2000 行 然后创建一个Treeview控件并添加到我的主页 这几乎是立即完成的 这很好 var orgId select name ctl00 PageContent Functio
  • 如何更改 Google 表格中图表的背景不透明度?

    我想在 Google 表格中设置 Google 图表的透明度或不透明度 就像在 Microsoft Excel 中一样 将图像设置在文本后面 以便文本仍然可读 不过好像该功能不起作用 功能预览 http drive google com f
  • 保存到服务器后,隐藏字符“\u0”添加到文件中

    我正在使用 Apache 服务器为 Web 开发网站提供服务 这样我就可以不断保存和编辑文件 我使用 Gulp for Sass 来连接和丑化 css 和 js 文件 一个月前 我的 js 和 css 文件遇到问题 似乎在文件下面添加了随机
  • 在Web应用程序中调用phonegap插件功能

    我正在构建我的第一个phonegap应用程序 当我打开该应用程序时 我立即将用户重定向 window location 到托管我的网络应用程序的服务器 是否可以从那里加载phonegap 插件 因为 deviceready 事件没有触发 我
  • PIL 不保存透明度

    from PIL import Image img Image open 1 png img save 2 png 第一张图像具有透明背景 但是当我保存它时 透明度消失了 背景为白色 我究竟做错了什么 可能图像已被索引 PIL 中的模式 P
  • Mnesia:如何同时锁定多行,以便我可以写入/读取一组“一致”的记录

    我多么希望我一开始就能表达我的问题 取一个包含 26 个键 a z 的表 并让它们具有整数值 创建一个流程 哎哟 一遍又一遍地做两件事 在一笔交易中 写入随机值a b and c使得这些值always总和为 10 在另一个事务中 读取值a
  • 交换两个向量之间的值,使两个向量的 max_element 之和最小

    这是 Codechef 的问题 但请耐心等待 https www codechef com ZCOPRAC problems ZCO16001 https www codechef com ZCOPRAC problems ZCO16001
  • SavedStateHandle不持久化数据

    我按照下一页中的说明创建了一个 viewModel 但是SavedStateHandle当我关闭应用程序并再次打开它时不起作用 这是页面 ViewModel 的已保存状态模块 https developer android com topi
  • 图片无法直接上传到相册

    我正在开发上传图片文件的应用程序 但图片不能直接上传到相册 上传之前始终必须经过批准 如何解决这个问题 问题 您想将这些照片添加到您的相册吗 下面的照片是从另一个应用程序上传的 您需要批准它们 你需要user photos允许直接上传到相册
  • 处理 EF 存储过程的多个结果集的通用方法

    EF 6 NET 4 51 我正在尝试构建一个通用帮助程序类 它将帮助我将每个结果集 翻译 为类型安全类 如此处所述使用 SqlQuery 处理存储过程的多个结果 https stackoverflow com questions 2530
  • 使用 Gravity Forms 和 Javascript 计算一个输入字段的长度并在另一个输入字段中打印它

    我正在使用 WordPress 的重力形式 我试图弄清楚如何计算用户在我的一个输入框中键入的字符的长度 并将该数字以相同的形式打印到另一个输入框 我认为这可以用 Javascript 来完成 但我是一个完全的新手 这是我非常淡化的努力 只是
  • EditText.setError 不显示错误文本,仅显示图标

    我的应用程序中有一个简单的验证 这里我使用了四个EdtiText 我显示错误时EditTex不会失去焦点 但问题在于失去焦点EditText只显示图标 没有错误消息 我尝试过使用requestFocus 方法 现在可以看到错误 但问题是 现
  • Dojo 动态填充组合框小部件

    有人可以向我解释一下为什么这个简单的直接代码不起作用 var serviceStore new dojo data ItemFileWriteStore data identifier serviceCode items jsonObj i
  • TFS 构建失败,文件“无法复制文件”,甚至不在项目中

    我已经设置了 TFS Build 直到昨天为止都运行良好 从那时起 我从一个项目中收到以下错误 C Program Files x86 MSBuild Microsoft VisualStudio v11 0 WebApplications
  • 如何考虑折叠边距来计算元素的高度

    我想计算 div 元素的总 高度 考虑到崩溃了 http www w3 org TR CSS2 box html collapsing margins margins http reference sitepoint com css col
  • 我应该如何使用 jcrop 在客户端裁剪图像并上传?

    我正在开发一个包含文件上传 HTML 控件的组件 在使用文件上传元素选择图像后 该图像将呈现在 HTML5 Canvas 元素上 这是带有示例代码的 JSFiddle https jsfiddle net govi20 spmc7ymp h
  • 如何在byte[]中制作csv?

    我想知道我应该如何创建一个在 byte 中创建 csv 文件的方法 目前我正在使用这样的东西 public byte makeCsv StringBuffer csv new StringBuffer csv append columnhe
  • plsql编译时如何避免Σ变成S?

    我们正在尝试在 pl sql 包中使用 符号 当我们编译包并执行时 符号变成 S 有什么方法可以避免这种情况吗 这是一个例子 declare Local variables here i varchar2 10 begin dbms out
  • 为什么我不能在 Python 的新线程中创建 COM 对象?

    我正在尝试在 Python 的新线程中从 dll 创建 COM 对象 这样我就可以在该线程中运行消息泵 from comtypes client import CreateObject import threading class Mess
  • 覆盖按钮的文本颜色不起作用

    我使用每个按钮上的buttonBarStyle 和布局上的buttonBarButtonStyle 为按钮栏创建了一个自定义主题 它工作正常 但我想更改按钮的文本颜色 但它仍然采用默认颜色 android color primary tex