将滚动条添加到自定义ViewGroup?

时间:2010-08-02 04:53:05

标签: android uiview scrollbar

我的XML布局中有以下节点:

<com.x.y.view.TagLayout android:id="@+id/TagLayout" 
android:layout_width="fill_parent" android:layout_height="170dip" />

TagLayout是一个扩展ViewGroup的类,基本上包含一堆带有文本的按钮(一个自定义对象作为标记,但不在此处或那里)。

问题是当按钮太多时,视图不再滚动。我可以确认我正在添加标签但我看不到任何内容。

如果我将上述内容包装在ScrollView中,则布局永远不会呈现。我尝试添加属性android:isScrollContainer和android:scrollbars,但这并没有改变任何东西。这里有什么我想念的吗?

我还应该补充一点,TagLayout正在覆盖onMeasure()事件。我想我需要在那里实现滚动机制......?

2 个答案:

答案 0 :(得分:1)

好吧,我大部分都得到了。我必须用LinearLayout实际包装上面的节点,然后在ScrollView周围包装THAT。填充稍微偏离(最后一个项目从视图中剪切)但是它在正确的轨道上。

答案 1 :(得分:1)

您可以将滚动添加到自定义ViewGroup,而无需将其包装在多个其他布局和视图中(事实上,如果您不必包含它,最好不要将其包装...具有平面布局层次结构很多更好的表现)。只需执行此question中描述的所有操作,并确保按照此answer中的说明将setWillNotDraw(false);添加到自定义ViewGroup构造函数中。