2011-07-13 37 views
9

我有一个android应用程序,我正在使用自定义主题应用于它在主要活动本身的Android清单上。此活动将创建一个listview,其中应用了该样式。Android中的样式层次结构 - 重要性的顺序是什么?

如果我为该列表视图创建了自定义布局(包括行本身的单独xml文件),并且将样式直接应用于这些布局,此样式是否会覆盖应用程序的整体样式?至于样式和主题如何工作,我试图掌握事件层次结构。

我的方式GUESSING它在我的例子中工作是:应用风格的行,引用的行布局xml>应用风格的整体列表视图,引用列表视图布局xml>应用风格自定义主题,风格xml引用由Android清单引用

对吗?或者我错误地接近了这一点。 (只是为了混淆起见,“>”我的意思是比一个更重要)

+0

我在同一个问题之后。在我最初的试验中,它似乎是相反的,这非常奇怪。如果有人能证实,会很棒。 – dineth

+0

这可能有所帮助:http://developer.android.com/guide/topics/ui/themes.html#Inheritance – CrackerJack9

回答

0

希望我明白你的问题就在这里......

您在styles.xml将始终覆盖样式定义的样式来自android当前使用的主题。

但是,这只适用于你覆盖的属性。

如果你把一个属性不变,Android将提供风格吧,有时这是以咬你

这个系统最好是这样描述的屁股:): 一个TextView需要的属性例如

<item name="android:textColor">#00FF00</item> 

Android将首先查看原始布局。 如果找不到,它会查看您的自定义样式。 如果找不到,它会查看android样式。

希望这会有所帮助。

0

标准主题有线条像它定义了ListView的风格:

<item name="listViewStyle">@android:style/Widget.ListView</item> 

在自己的主题,你可以这样做是不是在ListView风格定义的

<item name="listViewStyle">@style/MyOwnListView</item> 

事(自己的或默认)将是主题中定义的内容,如果你已经定义了它。