从自定义视图检索继承的属性

2024-01-24

我已经定义了一个父级styleable对于一些自定义视图如下

<declare-styleable name="ParentView">
    <attr name="color" format="color" />
    <attr name="rotate" format="float" />
</declare-styleable>

然后我定义了一个孩子styleable继承父级 styleable 的属性,即

<declare-styleable name="ParentView.ChildView">
    <attr name="state">
        <enum name="state0" value="0"/>
        <enum name="state1" value="1"/>
    </attr>
</declare-styleable>

现在,我可以从自定义视图中的子样式中检索属性值,但不能从其父样式中检索任何属性,即将 xml 中的自定义视图设置为

<com.example.android.MyCustomView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    custom:color="@color/orange"
    custom:state="state1" />

并在我的自定义视图的构造函数中使用以下代码

TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.ParentView_ChildView, 0, 0);
    try {
        state = array.getInt(R.styleable.ParentView_ChildView_state, state);
        color = array.getInt(R.styleable.ParentView_color, Color.WHITE);
    }
    finally {
        array.recycle();
    }

我检索到state属性正确,但是color属性总是只给出它的默认值,即白色。我在这里错过了什么吗?


您已将颜色定义为 attr 文件中的颜色格式,但您正在代码中执行 getInt 操作。

尝试改变这一行

color = array.getInt(R.styleable.ParentView_color, Color.WHITE);

to

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

从自定义视图检索继承的属性 的相关文章

随机推荐

  • Jquery - event.target 和 this 关键字之间的区别?

    有什么区别event target and this 假设我有 test click function e thisEventOb e target this this alert thisEventObj alert this 我知道警报
  • 您可以将 HTML 图像标签的 src 属性设置为控制器方法吗?

    我知道你可以做到这一点 img src http some svg on the web 但是如果我有一个带有注释的控制器方法怎么办 ResponseBody RequestMapping value getSVG public Respo
  • pygtk导入gtk错误

    我下载了中描述的所有内容 pygtk http www pygtk org 用于安装 一切都很顺利 直到我尝试打字 import gtk 它抛出了一个ImportError如下 from gtk import gtk ImportError
  • 如果进程被终止,写入 write() 的数据是否会刷新到磁盘?

    我正在使用一个程序qdbm http sourceforge net projects qdbm 维护键值存储 qdbm 链接到程序中 在某些情况下 该进程会在 qdbm 数据库中放入一个值 然后通过调用外部 init 脚本 通过 syst
  • Phonegap垂直滚动

    我正在为 ios 构建一个phonegap 应用程序 并且遇到垂直滚动问题 即使没有任何内容 网络视图中似乎也会有一些像素滚动 这会影响我在 html 中内置的绝对定位的导航栏和选项卡栏 这是我的 html 页面 没有内容 但我仍然得到图像
  • Promise 重试,直到使用 Typescript 成功/失败

    我的移动应用程序会连续将多个文件上传到服务器 这些文件通常来自连接强度有问题的偏远地区 为此 我想尝试几次发送文件 我还想在失败时继续尝试下一个 导出结束时显示所有错误消息 即 已上传 10 个文件 3 个失败 但是 我无法弄清楚带有承诺的
  • 两行Xerces程序中的异常

    下面的代码给了我一个例外XMLFormatTarget行 但如果我更改字符串 C test xml to test xml 效果很好 test cpp Defines the entry point for the console appl
  • 将引号之间的逗号替换为空格

    您好 我的表中每一行都有如下数据 0150566115 HEALTH 401K IC ON ICON HEALTH 401K 1 08 21 2014 我想要的是删除双引号 之间的每个逗号 然后用逗号 分割字符串的其余部分 我不想检查双引号
  • std::sort 与本地类型比较

    下面的例子 file mysort cc include
  • Python 抓取 JSON 并将其转换为 CSV

    我对 python 很陌生 这可能是一个可怕的问题 但事情是这样的 我正在尝试从特定网站抓取数据并将该数据转换为 CSV 我已经设法获得一个可用的 scraper 并将文件保存在我的计算机上 然而 当我尝试再次将 JSON 加载到 pyth
  • swift:以编程方式创建 UILabel 固定宽度,根据文本长度垂直调整大小

    我见过涉及自动布局的垂直调整大小的答案 但是UILabel我正在创建的仅在运行时需要 我可能需要从零到多个这样的标签 示例 忽略颜色 短文本 注意与长文本宽度相同 较长的文本 注意与较短的文本示例宽度相同 并具有更多行用于添加文本 如果文本
  • Firebase - 当 Websocket 被公司代理/防火墙阻止时,是否有一个标志可以强制进行长轮询?

    我正在开发一个简单的企业 AngularJS 应用程序 并计划使用 Firebase 作为后端 我必须支持的浏览器是IE8和Chrome 最新 我已经成功修复了前端中所有与 IE 相关的问题 并且可以成功从我的 Firebase 检索数据
  • Eclipse:垂直排列函数参数

    我在 Windows 7 专业版上运行 Eclipse 3 7 2 如果我输入这样的方法声明 private void processCode String codename boolean doSomethingElse int num
  • 使用 Swift 将数据发布到服务器

    很快我几天来就一直面临这个问题 我不知道我在这里开始的错误是我的 viewcontroller swift import UIKit import Foundation var otp 0 class ViewController UIVi
  • JVM实现接口和纯抽象类的区别?

    我和我的朋友想知道 JVM 内部的接口和纯抽象类之间是否真的存在区别 或者它是否只是真正的语法糖 我真的不明白为什么会有差异 但它可能并不那么牵强 就字节码而言 classfile 而言 它们是完全不同的 From 4 1 类文件结构 ht
  • 需要示例 Java 代码来运行 shell 脚本 [已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我尝试了许多不同的例子 但它不起作用 我真的很感激一些运行 shell 脚本的示例 Java 代码 您需要 Runtime getRunt
  • 重命名 BitBucket 上配置的 git 项目的最简单方法

    我有一个托管在 BitBucket 上的项目 我可以重命名它吗 如果没有 并且我需要创建一个新的存储库 有人可以告诉我最简单的方法吗 并在 BitBucket 上创建新的存储库 令我困惑的一个具体原因是是在本地还是从 bitbucket 网
  • Oracle:设置查询超时

    我有一个 PL SQL 程序 它通过透明网关对 AS400 数据库进行查询 有时AS400不响应查询 可能是网络问题 并且PL SQL程序挂起 有没有什么方法可以为 Oracle 查询设置超时 以便在经过一定时间后出现异常 您是否尝试过设置
  • 如何创建 Java cron 作业 [重复]

    这个问题在这里已经有答案了 我正在编写一个独立的批处理 Java 应用程序来从 YouTube 读取数据 我想设置一个 cron 作业每小时执行某项工作 我搜索并找到了为基本操作执行 cron 作业的方法 但不适用于 Java 应用程序 您
  • 从自定义视图检索继承的属性

    我已经定义了一个父级styleable对于一些自定义视图如下