- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
假设我正在制作一些具有可样式化属性的新 View 。我这样声明它们(这是 how the documentation says to do it :
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="TriangleView">
<attr name="direction">
<enum name="NE" value="0" />
<enum name="NW" value="1" />
<enum name="SW" value="2" />
<enum name="SE" value="3" />
</attr>
</declare-styleable>
<declare-styleable name="BannerView">
<attr name="direction">
<enum name="NE" value="0" />
<enum name="NW" value="1" />
<enum name="SW" value="2" />
<enum name="SE" value="3" />
</attr>
<attr name="thickness" format="dimension" />
</declare-styleable>
</resources>
但是,这不会起作用,因为所有属性显然都在同一个命名空间中,并且我收到错误 Error: Attribute "direction" has already been defined
.
显然我必须将明显重复的属性移到 <declare-styleable>
之外像这样:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="direction">
<enum name="NE" value="0" />
<enum name="NW" value="1" />
<enum name="SW" value="2" />
<enum name="SE" value="3" />
</attr>
<declare-styleable name="BannerView">
<attr name="thickness" format="dimension" />
</declare-styleable>
</resources>
但这提出了两个问题:
<declare-styleable>
的意义何在? ?BannerView
的方向只能是up
或 down
.最佳答案
What exactly is the point of
<declare-styleable>
?
<declare-stylable>
标签让您可以为您的自定义 View 声明属性,然后您可以在 xml 中为这些 View 设置这些属性。使用属性实际上有 3 个部分:
<attr>
在 <declare-stylable>
里面标签。app
)。在您的布局中使用自定义属性(例如 app:direction="NW"
)。AttributeSet
覆盖构造函数参数,得到一个TypedArray
并从中读取自定义属性(如果有),然后在构造函数中告诉 View 如何适本地使用这些属性。What if I want the attribute to behave differently in different views? For example if BannerView's direction can only be up or down.
尝试这样的事情:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="direction">
<enum name="NE" value="0" />
<enum name="NW" value="1" />
<enum name="SW" value="2" />
<enum name="SE" value="3" />
</attr>
<declare-styleable name="TriangleView">
<attr name="direction" />
</declare-styleable>
<declare-styleable name="BannerView">
<attr name="direction" />
<attr name="thickness" format="dimension" />
</declare-styleable>
</resources>
当您为 TriangleView
构建 xml 布局时或 BannerView
, 您可以使用 app:direction="NW"
两者的例子。在带有 AttributeSet
的构造函数中在TriangleView
或 BannerView
,属性将具有与原始格式相同的格式,但是您对该值做的操作取决于您在每个 View 中对构造函数的实现(可以是相同的或两者不同)。
如果您希望为不同的 View 定义不同的属性(即不同的“格式”或“枚举”),那么您必须使用不同的属性创建不同的属性名字。
关于android - declare-styleable 有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12694297/
我是初学者。这几天开始学习自定义 View ,过程中几乎没有问题。 我去谷歌解决这个问题时,有人提出了解决方案,但都没有成功。我使用 Kotlin 编写的自定义 View 。 这是我的自定义 View
我有一个自定义首选项控件,我在 values/attrs.xml 中为其定义了一些属性。只是为了集中讨论,这里是一个可以在 values/attrs.xml 中找到的属性示例:
假设我正在制作一些具有可样式化属性的新 View 。我这样声明它们(这是 how the documentation says to do it :
如何在属性中接受方法作为值?就像在 View 的 onClick 属性中一样: 如何定义接受方法的自定义属性? 我知道我们使用 在资源中,但我们如何让它接受方法? 最佳答案 Android 使用反射
我在一个项目中工作,我想使用约束!如果我使用它,当我想在 pohne 中构建 gradle 或安装 apk 时,我会遇到此错误: “错误:在约束集中,无法找到属性 android:elevation”
我是 android 开发的新手,我现在正在尝试创建自定义 View 。我遇到了很多问题。我已经解决了其中一些,但最难理解的是属性。让我们以带有属性的示例 xml 文件为例
我在 Maven Central 中有一个包含一些小部件的库。当我将该库作为依赖项(从 Maven Central)添加到使用 gradle 的项目时,我得到: java.lang.NoClassDe
我正在尝试将 Facebook Android SDK 导出为 JAR 以在我的项目中使用。 这需要动态加载所有资源。 例如,我必须进行类似这样的更改: //findViewById(R.id.com
是否可以在不引用资源类 R 的情况下以编程方式接收由 a 作为 int[] 保存的资源 ID? 问题是我无法解析定义的“declare-styleable”
我正在实现自己的 对于自定义 View (按照说明 here )。我希望能够指定一个整数数组作为可能的 XML 属性之一。我如何: 在 attrs.xml 中将整数数组指定为 XML 属性? 从 Ty
我有一个 resources.xml 文件位于目录 values/ 下,那是 /values/resources.xml 在我的 java 代码中,当我尝试
我有一个 CompositeComponent (EditText+ImageButton)单击按钮时,edittext 内容将被清除。它工作正常。我的问题是为我的组件设置属性。我正在使用 decla
当我在 android studio 3 中执行 paystack3.0.9 android 代码时出现以下错误。 Error:In ForegroundView, unable to find at
我正在使用形状 ImageView (https://github.com/siyamed/android-shape-imageview),当我想从形状 ImageView 定义的 declare-
我正在尝试整合 these libraries进入我的 Android 项目来制作导航 Controller 。当我将这两行添加到我的 build.gradle - 实现'android.arch.n
当我构建我的android项目时,出现以下错误 Error:In FontFamilyFont, unable to find attribute android:fontVariationSett
我正在尝试使用这个 ViewPager extension .这个插件帮助我使用 SwipeyTab。我成功地将示例作为单个应用程序运行。所以我想将扩展集成到我的应用程序中。然后我复制了 java 文
我正在阅读 Beginning Android 4 Development,在第 5 章中讨论了 Gallery 和 ImageVievs 并介绍了 declare-styleable XML 标记没
在 following the instructions 之后处理 Hello, Gallery 教程/示例应用程序时在网站上,Eclipse 报告 R.styleable 无法解析。 此错误的原因是
在 react native 中构建我的项目时,我收到以下错误: > Task :app:processDebugGoogleServices Parsing json file: /Users/ja
我是一名优秀的程序员,十分优秀!