帮助在运行时设置视图样式。

时间:2011-08-18 17:10:31

标签: android

我一直在寻找解决这个问题的正确方法,但找不到一个。答案可能是这是不可能的,但我会再试一次,尽管已经提出了许多类似的问题。

我有一个视图(它恰好是一个RatingBar,但它可能是一个按钮或TextView,甚至是一个ImageView),我想要一个自定义样式。根据某些东西,我希望它(例如)使用红星,蓝星或橙星。我想在列表中使用此视图,使用自定义列表适配器,以便基于基础列表数据中的某些属性,项目列表视图显示Red-Star RatingBar,或Blue-Star RatingBar,或OrangeStar的RatingBar。

我尝试从代码构建样式(选择反映我想要的颜色星的正确的drawable),然后让自定义ListAdapter创建一个具有适当样式的新RatingBar(因为视图的样式无法更改创建视图后),但当我这样做时,RatingBar永远不会出现。我不确定这是否是预期的,或者我是否有其他错误。

这就像我想要一个选择器用于我的图像选择器,或者我想要的选择器的另一个(自定义?)属性。

如果我创建了一个CustomView,它扩展了具有额外属性的RatingBar,那么xml定义的Selector是否能够访问该属性并使用它来选择不同的图像?

我想解决这个问题,因为我能想到的唯一选择是不使用带有ListAdapter的ListView,这基本上会导致我编写更多的自定义代码。

思考?

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用主题?您可以在styles.xml中为RatingBar定义主题。在这个RatingBar主题中你可以定义一个android:progressDrawable,它将引用一个drawable。创建多个主题,每个主题指向不同的drawable。拥有这些不同的主题,您将能够以编程方式设置RatingBar Widget android:style属性,以支持您创建的这些主题(红色,蓝色,绿色)。