gpt4 book ai didi

Android 属性,declare-styleable,引用

转载 作者:太空宇宙 更新时间:2023-11-03 12:51:32 26 4
gpt4 key购买 nike

我是 android 开发的新手,我现在正在尝试创建自定义 View 。我遇到了很多问题。我已经解决了其中一些,但最难理解的是属性。让我们以带有属性的示例 xml 文件为例

<declare-styleable name="ViewPagerIndicator">
<!-- Style of the circle indicator. -->
<attr name="vpiCirclePageIndicatorStyle" format="reference"/>
<!-- Style of the icon indicator's views. -->
<attr name="vpiIconPageIndicatorStyle" format="reference"/>
<!-- Style of the line indicator. -->
<attr name="vpiLinePageIndicatorStyle" format="reference"/>
<!-- Style of the title indicator. -->
<attr name="vpiTitlePageIndicatorStyle" format="reference"/>
<!-- Style of the tab indicator's tabs. -->
<attr name="vpiTabPageIndicatorStyle" format="reference"/>
<!-- Style of the underline indicator. -->
<attr name="vpiUnderlinePageIndicatorStyle" format="reference"/>
</declare-styleable>
<attr name="centered" format="boolean" />
<attr name="selectedColor" format="color" />
<attr name="strokeWidth" format="dimension" />
<attr name="unselectedColor" format="color" />

<declare-styleable name="CirclePageIndicator">
<attr name="centered" />
<attr name="fillColor" format="color" />
<attr name="pageColor" format="color" />
<attr name="android:orientation"/>
<attr name="radius" format="dimension" />
<attr name="snap" format="boolean" />
<attr name="strokeColor" format="color" />
<attr name="strokeWidth" />
<attr name="android:background"/>
</declare-styleable>
<declare-styleable name="LinePageIndicator">
<attr name="centered" />
<attr name="unselectedColor" />
<attr name="selectedColor" />
<attr name="lineWidth" format="dimension" />
<attr name="strokeWidth" />
<attr name="gapWidth" format="dimension" />
<attr name="android:background"/>
</declare-styleable>
  1. 引用格式是什么意思,我仍然不明白这种格式是什么意思,我发现它可以与可绘制对象一起使用,我也看到它可以与主题一起使用。请给出一个很好的例子,说明它在哪里有用,以及这种格式类型的主要目的是什么。在前面的示例中,它用于样式,但我不明白如何在我将要使用自定义 View 的 xml 文件中使用它。
   <com.viewpagerindicator.CirclePageIndicator
android:id="@+id/indicator"
android:padding="10dip"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
custom:auto_cycle="true"
custom:pageColor="@color/abc_background_cache_hint_selector_material_dark"
/>
  1. 每个 declare-styleable name="Name of custom view"行,据我所知,用于单独的自定义 View ,我们可以在示例中看到这一点。但是<declare-styleable name="ViewPagerIndicator">的目的是什么? ,我没有在这个库中找到任何具有这样名称的 View ,这个样式包括我的第一个问题(引用属性)。

  2. 如果属性在 declare-stylable 之外声明,则意味着它位于多个 View 中,而不是在每个 View 中重复代码,公共(public)属性放在外面。我对吗 ?

请帮忙,我花了一天时间试图找到任何教程或文档。官方文档很差。我想很多新手都会感谢解释这个话题。

请帮助理解这一点,最重要的问题是关于引用文献(第一个问题)<attr name="vpiCirclePageIndicatorStyle" format="reference"/>这是什么,如何使用它,在哪里声明?

我还发现了另一个库中使用的示例

<declare-styleable name="Themes">
<attr name="SliderStyle" format="reference"/>
<attr name="PagerIndicatorStyle" format="reference"/>
</declare-styleable>

这个我完全看不懂。请帮助,你是我最后的希望。

最佳答案

AFAIK,引用允许您引用该属性中的其他可绘制对象和样式。

<declare-styleable name="Theme">
<attr name="indicatorStyle" format="reference"/>
</declare-styleable>

这允许我声明一个自定义样式,我以后可以得到

<style name="AppTheme.Platform.NoActionBar" parent="Theme.AppCompat.NoActionBar">
<item name="indicatorStyle">@style/ViewPagerIndicator</item>
</style>

现在我可以在 XML 中使用它了

style="?attr/indicatorStyle"

如果我试图在一个没有声明它的主题中使用这个属性,我会得到一个错误。这就是 ViewPagerIndicator 样式的用途,用于在应用主题中声明自定义属性。我没听懂你的第三个问题,但这应该涵盖了前两个问题。

关于Android 属性,declare-styleable,引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30137101/

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