cod*_*ber 12 android overriding coding-style
我有一个Android库,包含主题,属性,样式,颜色,当然还有代码.
对于像分隔符的高度,项目颜色等的东西.我有能力使用colors.xml覆盖尺寸和使用colors.xml覆盖颜色(仅留下布局,主题和样式).
但是,如果我有一个使用Android的list_selector_background的ListView,并且我还有另一个使用此选择器进行可按压TextView的活动,除了在代码中覆盖它之外,我找不到使用?样式的方法:attrib语法,但我看不出它是如何帮助的
我目前拥有的简单而快速的解决方案是创建一种风格:
<style name="ResultsListViewStyle" >
<item name="android:listSelector">@android:drawable/list_selector_background</item>
</style>
Run Code Online (Sandbox Code Playgroud)
然后将上面的xml粘贴到我的实际项目style.xml并在那里更改选择器.这不是那么糟糕,但我需要使用此选择器为每个项目执行此操作...
cod*_*ber 14
由于没有人选择手套,我最终找到了解决方案,确实是一个属性.
解决方案:
在你的attrs.xml中为你需要的值创建一个条目,对于像draw这样的drawbale,例如使用: <attr name="ListResultSelector" format="reference" />
在您的theme.xml中定义您的主题,如果该属性是您唯一的属性,并且您希望将Android普通主题作为主题,则可以使用:
<style name="Theme" parent="@android:style/Theme.NoTitleBar">
<item name="ListResultSelector">@android:drawable/list_selector_background</item>
</style>
Run Code Online (Sandbox Code Playgroud)如果要在特定应用程序中覆盖,可以简单地继承'theme'(<style name="Theme.newTheme">)并在那里更改该特定属性.
在你的风格而不是定义drawable你可以定义: <....android:background="?attrib:ListResultSelector" ../>
将主题应用于您的应用程序或相关活动
通过这种方式,我不需要覆盖整个样式,只需要像drawables,类型面等特殊属性......在其中.因此,如果我需要更改原始样式的内容,并且我希望它同时影响旧的和新的应用程序,我不需要两次.
| 归档时间: |
|
| 查看次数: |
10854 次 |
| 最近记录: |