Android 自定义视图和defStyleAttr

Android 自定义视图和defStyleAttr,android,xml,android-custom-view,declare-styleable,Android,Xml,Android Custom View,Declare Styleable,我正在努力处理自定义视图defstylettr。(简短说明我使用了一个首选项作为示例,因为它与谷歌使用它的方式相同) 因此,对于Android提供的几乎每个视图或首选项,您都会有一个类似以下的构造函数: public SeekBarPreference(上下文、属性集属性){ 这(上下文、属性、R.attr.seekbarpferencestyle); } 这将默认样式属性定义为R.attr.seekBarPreferenceStyle 如果您现在查看以下内容: : @样式/首选项。请参阅k

我正在努力处理自定义视图
defstylettr
。(简短说明我使用了一个
首选项作为示例,因为它与谷歌使用它的方式相同)

因此,对于Android提供的几乎每个
视图
首选项
,您都会有一个类似以下的构造函数:

public SeekBarPreference(上下文、属性集属性){
这(上下文、属性、R.attr.seekbarpferencestyle);
}
这将默认样式属性定义为
R.attr.seekBarPreferenceStyle

如果您现在查看以下内容:


@样式/首选项。请参阅kbarp参考资料
然后最终将a与所需的布局资源id链接起来,该布局资源id将移交给要膨胀的超类:


@布局/首选项\u小部件\u seekbar\u材料
不幸的是,我无法找到主题
首选项ThemeOverlay
如何链接到属性
seekBarPreferenceStyle
的提示

那么这两者是如何联系在一起的呢?

我终于找到了一个解释你需要知道的基本知识的方法

自定义视图 对于示例,我使用
SeekBarPreference
作为自定义对象(
Preference
View
非常相似)

简而言之,有两种方法可以设置默认样式

为您的活动(或类似活动)设置一个自定义主题,将某些内容链接到您的自定义样式(
seekbarpferencestyle
),或者直接通过
style
XML属性设置样式

主题 styles.xml


@样式/链接到定义样式的
AndroidManifest.xml

看看我在那里找到了什么:


@style/Preference.Holo.SeekBarPreference
链接到链接布局资源的样式:


@布局/首选项\u小部件\u seekbar
最后,为了再次给你带来更多的困惑,Android似乎将问题中的材质样式(而不是答案中的全息主题)链接到默认主题(无论是
DeviceDefault
还是其他)

因此,如果您对此有任何线索,请随时添加到评论:)