gpt4 book ai didi

android - declare-stylable 名称如何链接到使用其属性的 View ?

转载 作者:行者123 更新时间:2023-11-29 01:54:13 25 4
gpt4 key购买 nike

通常自定义属性的例子是以下形式:

<declare-stylable name="MyView">
<attr name="name" format="string"/>
</declare-styleable>

及其用法:

<com.example.test.MyView
customns:name="Hello"/>

因此自定义 View 与样式属性具有相同的名称。

但是in this example (click for full code)你看:

<declare-styleable name="Options">
<attr name="titleText" format="string" localization="suggested" />
<attr name="valueColor" format="color" />
</declare-styleable>

使用者:

<com.vogella.android.view.compoundview.ColorOptionsView
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
custom:titleText="Background color"
custom:valueColor="@android:color/holo_green_light"
/>

这让我想知道,ColorOptionsView 是如何链接到用名称 Options 定义的属性的?

最佳答案

这些选项可作为声明的 namespace custom 的一部分使用,它包含在 XML 文件的顶部:

xmlns:custom="http://schemas.android.com/apk/res/com.vogella.android.view.compoundview"

注意

简单地添加这一行将不会提供对自动完成的支持。如果这就是您的问题的意思,您需要将架构添加到工作区的 XML 目录。您可以在 Eclipse 中执行此操作,方法是转到 Eclipse -> Preferences,然后是 XML -> XML Catalog。在这里,单击 Add... 按钮。导航到 XML 模式文件,然后选择 OK。如果您关闭并重新打开 XML 文件,您现在将拥有自动完成功能。


最后,在解包ColorOptionsView.java中使用的属性时,作者可以专门从这个命名空间中寻找属性。这是来自同一来源(由我评论):

//grab the declared-styleable resource entries
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.Options, 0, 0);
//get the "titleText" entry from this element's attributes
String titleText = a.getString(R.styleable.Options_titleText);
//get the "valueColor" attribute. If it does not exists, set the default to holo_blue_light
int valueColor = a.getColor(R.styleable.Options_valueColor,
android.R.color.holo_blue_light);
a.recycle();

关于android - declare-stylable 名称如何链接到使用其属性的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16153976/

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