- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是 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>
<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"
/>
每个 declare-styleable name="Name of custom view"
行,据我所知,用于单独的自定义 View ,我们可以在示例中看到这一点。但是<declare-styleable name="ViewPagerIndicator">
的目的是什么? ,我没有在这个库中找到任何具有这样名称的 View ,这个样式包括我的第一个问题(引用属性)。
如果属性在 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/
你能比较一下属性吗 我想禁用文本框“txtName”。有两种方式 使用javascript,txtName.disabled = true 使用 ASP.NET, 哪种方法更好,为什么? 最佳答案 我
Count 属性 返回一个集合或 Dictionary 对象包含的项目数。只读。 object.Count object 可以是“应用于”列表中列出的任何集合或对
CompareMode 属性 设置并返回在 Dictionary 对象中比较字符串关键字的比较模式。 object.CompareMode[ = compare] 参数
Column 属性 只读属性,返回 TextStream 文件中当前字符位置的列号。 object.Column object 通常是 TextStream 对象的名称。
AvailableSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。 object.AvailableSpace object 应为 Drive 
Attributes 属性 设置或返回文件或文件夹的属性。可读写或只读(与属性有关)。 object.Attributes [= newattributes] 参数 object
AtEndOfStream 属性 如果文件指针位于 TextStream 文件末,则返回 True;否则如果不为只读则返回 False。 object.A
AtEndOfLine 属性 TextStream 文件中,如果文件指针指向行末标记,就返回 True;否则如果不是只读则返回 False。 object.AtEn
RootFolder 属性 返回一个 Folder 对象,表示指定驱动器的根文件夹。只读。 object.RootFolder object 应为 Dr
Path 属性 返回指定文件、文件夹或驱动器的路径。 object.Path object 应为 File、Folder 或 Drive 对象的名称。 说明 对于驱动器,路径不包含根目录。
ParentFolder 属性 返回指定文件或文件夹的父文件夹。只读。 object.ParentFolder object 应为 File 或 Folder 对象的名称。 说明 以下代码
Name 属性 设置或返回指定的文件或文件夹的名称。可读写。 object.Name [= newname] 参数 object 必选项。应为 File 或&
Line 属性 只读属性,返回 TextStream 文件中的当前行号。 object.Line object 通常是 TextStream 对象的名称。 说明 文件刚
Key 属性 在 Dictionary 对象中设置 key。 object.Key(key) = newkey 参数 object 必选项。通常是 Dictionary 
Item 属性 设置或返回 Dictionary 对象中指定的 key 对应的 item,或返回集合中基于指定的 key 的&
IsRootFolder 属性 如果指定的文件夹是根文件夹,返回 True;否则返回 False。 object.IsRootFolder object 应为&n
IsReady 属性 如果指定的驱动器就绪,返回 True;否则返回 False。 object.IsReady object 应为 Drive&nbs
FreeSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。只读。 object.FreeSpace object 应为 Drive 对象的名称。
FileSystem 属性 返回指定的驱动器使用的文件系统的类型。 object.FileSystem object 应为 Drive 对象的名称。 说明 可
Files 属性 返回由指定文件夹中所有 File 对象(包括隐藏文件和系统文件)组成的 Files 集合。 object.Files object&n
我是一名优秀的程序员,十分优秀!