如何可靠地从 AttributeSet 获取颜色?

2023-11-24

我想创建一个自定义类,在 Android XML 文件中布局时将颜色作为其属性之一。然而,颜色可以是一种资源,也可以是多种直接颜色规范之一(例如十六进制值)。有没有一种简单的首选方法来使用AttributeSet检索颜色,因为表示颜色的整数可以引用资源值或 ARGB 值?


假设您已经像这样定义了自定义颜色属性:

<declare-styleable name="color_view">
    <attr name="my_color" format="color" />
</declare-styleable>

然后在视图的构造函数中,您可以像这样检索颜色:

public ColorView(Context context, AttributeSet attrs) {
   super(context, attrs);

   TypedArray a = context.obtainStyledAttributes(attrs,R.styleable.color_view);
   try {
       int color = a.getColor(R.styleable.color_view_my_color, 0);
       setBackgroundColor(color);
   } finally {
       a.recycle();
   }
}

您实际上不必担心颜色属性是如何填充的,就像这样

<com.test.ColorView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:my_color="#F00"
    />

或者像这样:

<com.test.ColorView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:my_color="@color/red"
    />

The getColor任何情况下方法都会返回一个颜色值。

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

如何可靠地从 AttributeSet 获取颜色? 的相关文章

随机推荐

  • 如何选择活动模型序列化器关系所需的属性

    我正在使用JSONAPI格式随着主动模型序列化器创建一个 apiRails API 我有一个序列化器 它显示特定的post那有很多topics目前 在关系下列出了这些主题 目前它只列出了 id 和类型 我也想显示主题的标题 有人会说用inc
  • Android 应用程序发布后,如何向 SQLite 数据库添加新列?

    我想向 SQLite 数据库添加新列 但我已经在 Play 商店上发布了我的应用程序 因此 如果我编辑它 用户需要卸载并重新安装该应用程序 但我不想要那样 请帮忙 我是 Android 新手 1 增加 或简单地更改 您的数据库版本 2 这会
  • 会话验证过滤器,当会话过期时注销用户

    我有一个会话验证过滤器 可以在会话过期时注销用户 这是一段代码 但这不起作用 不起作用意味着即使会话过期也不会重定向到登录页面 请帮我解决这个问题 public void doFilter ServletRequest request Se
  • 移位 Swift 数组

    颜色阵列 let colorArray UIColor redColor UIColor orangeColor UIColor yellowColor UIColor greenColor UIColor blueColor 目标是shi
  • 如何将 JQuery-UI 与 Aurelia 结合使用

    我使用 Aurelia CLI 启动了一个新的 Aurelia 应用程序 我按照 Aurelia 文档中的说明安装了 JQuery 并配置了 aurelia json http aurelia io hub html doc article
  • Paypal 自适应付款返回网址调用两次

    我已经实现了贝宝自适应支付方法并使用网络流程 付款后 当我明确单击返回按钮时 返回网址会调用两次 但如果我等待自动重定向 则它只会调用一次 我无法理解为什么 return url 调用了两次 请指教 我正在使用下面的代码 public st
  • 如何将 atan2() 映射到 0-360 度

    atan2 y x 在 180 处有不连续性 顺时针方向切换到 180 0 如何将值范围映射到 0 360 这是我的代码 CGSize deltaPoint CGSizeMake endPoint x startPoint x endPoi
  • 使用较新的 RichEdit 版本?

    我尝试过在 C 上使用 RichTextBox 发现处理数千行长文本时速度太慢 经过一番谷歌搜索 我发现这是因为 net默认使用RichEdit 2 0 解决方案是使用RichEdit 5 0 C RichEditBox 性能极慢 加载 4
  • 颤振主通道问题

    在调试模式下在 IA 模拟器上的 AOSP 上启动 lib main dart 运行 Gradle 任务 assembleDebug 警告 插件 path provider android 需要 Android SDK 版本 31 警告 插
  • 对一个衬垫进行外壳处理以添加到文件中

    这大概是一个复杂的解决方案 我正在寻找一个简单的运算符 例如 gt gt 但用于前置 恐怕它不存在 我必须做类似的事情 mv myfile tmp cat myheader tmp gt myfile 有更聪明的吗 这仍然使用临时文件 但至
  • 为什么 C# 接口方法不声明为抽象或虚拟?

    接口中的 C 方法的声明不使用virtual关键字 并在派生类中重写而不使用override关键词 是否有一个原因 我认为这只是一种语言便利 显然 CLR 知道如何在幕后处理这个问题 默认情况下方法不是虚拟的 但是还有其他技术原因吗 下面是
  • Java 异常解析

    我正在编写一个约会程序 允许用户输入约会日期 描述和约会类型 一切正常 直到他们选择 打印范围 打印一系列日期 当他们选择这样做时 它会告诉他们输入开始日期和结束日期 然后程序会从这些日期之间提取所有约会并将它们显示到输出框中 以下是我在打
  • Materialize:无法在 Dropdown._makeDropdownFocusable 处将属性“tabIndex”设置为 null

    我正在尝试通过包含 Materialize select 的 jest 测试我的 vuejs 组件 执行组件测试时 我在 Materialize js 中收到以下错误 TypeError Cannot set property tabInd
  • 我可以内联指定显式类型比较器吗?

    因此 NET 3 0 3 5 为我们提供了许多查询 排序和操作数据的新方法 这要归功于 LINQ 提供的所有简洁函数 有时 我需要比较没有内置比较运算符的用户定义类型 在许多情况下 比较非常简单 比如 foo1 key foo2 key 我
  • 返回中间变量和直接返回函数调用有区别吗?

    调用函数有什么区别吗return 然后调用该函数return在运行时获取值 如下所示 我的函数原型 int aFunc int int bFunc int 我的第一个 bFunc 返回行 int bFunc int return aFunc
  • Lattix 的开源替代品有哪些?

    我有机会与Lattix在过去 我相信它所代表的范式 分层依赖矩阵 是大规模系统架构管理的未来 然而 我工作的公司总是因为价格标签而望而却步 有人知道存在任何好的开源替代方案吗 经过一番搜索 我似乎找不到一个 这里列出了一些实现Lattix核
  • iPhone UIWebView - 如何设置缩放级别和位置?

    我在 UIWebView 中显示一系列平铺图像 并希望以编程方式设置 UIWebview 的初始缩放和查看位置 如何去做呢 将UIWebView的属性scalesPageToFit设置为YES 然后 网页会缩放以适合用户 并且用户可以放大和
  • 使用 qmake 时是否有可能通过 -isystem 传递包含

    我使用 qmake 作为 makefile 生成器并希望坚持使用它 此外 我想使用 gcc Wall Werror Wundef Wextra 来获得健壮的代码 我正在考虑 迂腐 但那是更进一步的事情 我目前的主要问题是像这样的库生成的大量
  • 访问 .NET 中 VBA 函数的返回值?

    我在 VBA 中有以下代码 位于 Excel 2007 工作簿中 Public Function Multiply a As Double b As Double As Double Multiply a b End Function 如果
  • 如何可靠地从 AttributeSet 获取颜色?

    我想创建一个自定义类 在 Android XML 文件中布局时将颜色作为其属性之一 然而 颜色可以是一种资源 也可以是多种直接颜色规范之一 例如十六进制值 有没有一种简单的首选方法来使用AttributeSet检索颜色 因为表示颜色的整数可