gpt4 book ai didi

android - 以编程方式在 Android 应用程序中获取 xml 命名空间

转载 作者:数据小太阳 更新时间:2023-10-29 02:39:44 24 4
gpt4 key购买 nike

Android 的 AttributeSet.getAttributeIntValueString namespace 作为输入。对命名空间进行硬编码似乎不是一个好主意,因为如果命名空间发生变化,则会引入运行时错误。更具体地说,最好避免

attrs.getAttributeIntValue("http://schemas.android.com/apk/res-auto", 
"myAttribute", 0)

因为它硬编码字符串 "http://schemas.android.com/apk/res-auto",这似乎是不必要的。 (诚​​然,它对 "myAttribute" 进行了硬编码,但这似乎是不可避免的。)是否可以在不对 namespace 进行硬编码的情况下读取整数属性 "myAttribute"? (可能通过命名包含 “myAttribute” 的 xml 文件。)这样,如果出现任何问题,就会生成编译错误。 (例如,该文件不再存在。)或者,如果找不到 "myAttribute" 是否可能产生编译器错误(这也将消除对默认值的需要,因为它永远不会被使用)。

上下文。我扩展了一个 LinearLayout 来覆盖构造函数 LinearLayout(Context context, AttributeSet attrs)LinearLayout(Context context, AttributeSet attrs, int defStyleAttr)。这些构造函数使用 AttributeSet.getAttributeIntValueattrs 中读取属性。因此,代码和 GUI 是完全分开的。但是,如果在 GUI 中更改了 namespace ,那么在代码中硬编码 namespace 时就会出现问题。 (这确实发生了。所以,我想弄清楚如何避免它再次发生!)

最佳答案

如果您需要为您的 View 自定义属性并希望在您的代码中使用它,您可以按照 documentation about custom views .基本上,您在 styleable 中声明您的属性,然后使用 obtainResources 获取它们。

关于android - 以编程方式在 Android 应用程序中获取 xml 命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33895121/

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