2011-08-18 41 views
0

我已经四处寻找这个问题的适当解决方案,但找不到一个。答案可能是这是不可能的,但我会再试一次,尽管许多类似的问题已经被提出。帮助在运行时为视图添加样式。

我有一个视图(它恰好是一个RatingBar,但它可能是一个按钮或一个TextView或一个ImageView),我想要一个自定义样式。根据,我希望它(例如)使用红色星星,或蓝色星星或橙色星星。我想在列表中使用此视图和自定义列表适配器,以便基于基础列表数据中的某个属性,项目列表视图显示红星评级栏或蓝星评级栏或OrangeStar的RatingBar。我试图从代码构建一个样式(选择反映我想要的颜色星星的权利drawables),然后让自定义ListAdapter创建一个新的RatingBar与适当的样式(因为视图的样式不能是在视图创建后更改),但是当我这样做时,RatingBar从不出现。我不确定这是否预期,或者如果我有其他问题。

这就像我想为我的图像选择器的选择器,或者我已经有的选择器的另一个(自定义?)属性。

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

我想弄清楚这一点,因为唯一可以替代的方法是不使用带ListAdapter的ListView,这基本上导致我编写更多的自定义代码。

的思考?

回答

0

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

+0

谢谢,我会尝试一下,看看它是如何发展。 – aha

+0

任何运气与主题? – icecreamman

+0

我不这么认为。主题适用于整个活动,而不是单个视图。所以我不能在一项活动中使用我的3个评级栏,所有评级栏都有不同的颜色。但我并没有完全放弃。 – aha