gpt4 book ai didi

java - 为什么我们需要使用 Context.obtainStyledAttributes 和 declare-styleable 来获取 GUI 组件的属性

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:54:18 25 4
gpt4 key购买 nike

我刚刚看到一些教程代码示例,它们在 XML 中使用 declare-styleable 并在 Java 代码中使用 Context.obtainStyledAttributes

我的理解是,它试图获取 GUI 组件的属性(如背景颜色)。

我在想,为什么我们为了获得一个简单的属性就需要经过这些繁琐的步骤呢?如果我想每次都检索 GUI 组件属性,我必须创建一个新的 XML 文件,并将我要检索的属性添加到 XML 文件本身。我们可以有更简单的东西吗?

目前,这是我在尝试获取 GUI 组件的属性时需要做的事情。


http://developer.android.com/resources/tutorials/views/hello-gallery.html

创建一个 XML 文件。

<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="HelloGallery">
<attr name="android:galleryItemBackground" />
</declare-styleable>
</resources>

有如下Java代码。

TypedArray a = context.obtainStyledAttributes(R.styleable.HelloGallery);
mGalleryItemBackground = a.getResourceId(
R.styleable.HelloGallery_android_galleryItemBackground, 0);
a.recycle();

我们可以有一些简单的东西吗

helloGalleryInstance.getBackground();

与在 Swing 中一样,这是我通常用来获取 GUI 组件的属性的方法。这很有趣也很容易。我们可以在 Android 中有类似的东西吗?

instaceOfAComponent.getBackground();

最佳答案

实际上,它的意义远不止于此。使用样式和获取属性的技术是一种允许自定义组件的使用者使用您为控件定义的 XML 属性的方法。例如,您可以创建一个具有字幕文本大小属性的 TitleWithSubtitle 控件。这种技术可以让您从布局 XML 中获取值。您仍然可以将 getSubtitleTextSize() 方法添加到控件本身,但这将用于不同的目的。

关于java - 为什么我们需要使用 Context.obtainStyledAttributes 和 declare-styleable 来获取 GUI 组件的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5112637/

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