问题标签 [declare-styleable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 如何在可声明样式中定义整数数组?
我正在为自定义视图实现自己<declare-styleable>
的视图(按照此处的说明进行操作)。我希望能够将整数数组指定为可能的 XML 属性之一。我如何:
attrs.xml
在?中将整数数组指定为 XML 属性- 调用我的自定义视图后从TypedArray中获取它
obtainStyledAttributes()
?
java - 从代码访问 XML 枚举值
我已经声明了一个带有枚举值的可样式属性,如下所示:
现在我想在我的代码中引用那些,最好是在一个switch
语句中。
除了将枚举中的值硬编码到我的代码中之外,我找不到任何方法来做到这一点(首先破坏了枚举的一半目的)。
有谁知道如何做到这一点?
编辑
根据@CommonsWare 的回答,尝试了这个:
资源.xml:
attrs.xml:
这导致top
不再是rotation
.
android - 可声明样式的名称如何链接到使用其属性的视图?
通常,自定义属性的示例采用以下形式:
及其用法:
因此自定义视图与可样式化属性具有相同的名称。
但是在这个例子中(点击查看完整代码)你会看到:
使用者:
这让我想知道,它是如何ColorOptionsView
与 name 定义的属性相关联的Options
?
android - 获取 styled 属性中使用的可绘制引用的资源 id
有了这个自定义视图MyView
,我定义了一些自定义属性:
并在布局 XML 中按如下方式分配它们:
起初我以为我可以backgroundBase
使用以下方法检索自定义属性:
仅当未分配属性并R.drawable.blank
返回默认值时才有效。
当app:backgroundBase
被赋值时抛出异常“无法转换为整数类型=0xn”,因为即使自定义属性格式将其声明为整数,它确实引用了 aDrawable
并且应按如下方式检索:
这有效。
现在我的问题是:
我真的不想Drawable
从 TypedArray 中获取,我想要对应的整数 id app:backgroundBase
(在上面的示例中它是 R.drawable.logo1
)。我怎么才能得到它?
android - 从 XML 在自定义视图上设置静态字段
这是自定义视图
此 XML 多次实例化 MyView
我想知道color
从 XML 初始化静态的正确方法是什么。
我已经知道一种解决方案(但我想知道是否有不同的推荐方式):
- 定义自定义属性
- 在任何实例化上使用自定义属性
MyView
- 在 MyView 构造函数期间设置静态字段
TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.MyView, defStyle, 0);
int c = a.getInteger(R.styleable.MyView_color, -1);
如果( c != -1 ) 颜色 = c;
我唯一不喜欢这个解决方案的是它依赖于MyView
实例化,通常在代码中,静态字段和方法可以独立访问,所以我想知道是否有一种方法可以设置静态字段也独立于MyView
实际实例化。
android - Styleable cannot be resolved
Here is the code I am using:
Here is the attrs.xml file (added to values folder):
The answers in these questions couldn't fix the problem. Please don't consider my question as duplicate.
Update: It seems that I was importing the wrong R class. It shall be the application's R
class not android.R
.
java - How to declare several stylable attributes with the same name for different tags?
I want both my ViewA and ViewB to have the "title" tag. But I can't put this in attrs.xml
:
because of the error Attribute "title" has already been defined. Another question shows this solution:
but in that case, R.styleable.ViewA_title
and R.styleable.ViewB_title
are not generated. I need them for reading the attributes from the AttributeSet using the following code:
How can I solve this?
java - TypedArray#getTextArray() 期间抛出异常
这是我第一次创建自定义视图,我试图通过 XML 使用条目填充它——以类似于 Spinner 的方式。我显然在这里做错了什么,但我在 Spinner 之后设计了我的方法,所以我看不到哪里出了问题。
为了解释这段代码的意图,我创建了一个自定义首选项列表。MultiChooserOption 是一个允许用户从选项列表中选择多个事物的项目。TextOption 只是定义了将在列表中显示的视图,即,有一个标题和一些其他元素,对于 TextOption 的子类,其他元素将是文本而不是小部件(复选框等)。
以下是对我构建它的方式以及我的 logcat 输出有任何影响的所有内容的来源。
attrs.xml
MultiChooserOption.java
文本选项.java
options_fragment.xml
数组.xml
字符串.xml
OptionsFragment.java
日志输出
因此,当CharSequence[] optionsArray = attributesArray.getTextArray( R.styleable.MultiChooserOption_options );
MultiChooserOption 中的行执行时,会引发异常并且整个 shebang 会崩溃。据我所知,我尽可能多地关注 Spinner。
请帮助我了解我在这里做错了什么。
android - android 4.4 的自定义样式不可用
所以我对 android 4.4 中的自定义样式有疑问。
如果有人知道 android 4.4 中的问题或额外内容导致自定义样式无法启动,请提供帮助。
这是我使用的代码,它在 android 2.2 到 4.3 上完美运行(用手机和模拟器测试)。
布局 :
班级:
java - 从值中获取样式化的枚举名称
这不是关于枚举被问了一百万次的问题。
我将枚举定义为 styleable 属性的一部分(用于自定义小部件)
然后我像这样使用它:
在首选项构造函数中,我想获得名称“RGB”。
但这不起作用,a.getString(...)
返回"1"
“RGB”的值,我得到一个抛出的异常 ,因为:mColorMode
null
代替
注意:我想强调 ColorMode 不是enum
导致问题的原因,我需要从中获取名称的枚举是问题顶部的枚举,以 XML 声明。是的,它们具有相同的名称,但我不能依赖它们具有相同的数值。