如何获得ScrollView的唯一直接子项?

时间:2014-03-12 13:33:17

标签: android android-fragments scrollview

我的一个活动可能包含不同的Fragment类。这些片段中的每一个都具有特定的布局,可以是LinearLayout,RelativeLayout或ScrollView。 在这个布局上,我想以编程方式添加视图。问题是,如果布局是ScrollView,我无法直接向其添加视图(我获取错误ScrollView can host only one direct child)。然后,如果片段的布局是ScrollView,我想只接受直接子项(这是一个LinearLayout或RelativeLayout)。

我怎么能接受它?我尝试使用以下代码

ViewGroup fragmentLayout = (ViewGroup)myFragment.getView();
if (fragmentLayout instanceof ScrollView)
    fragmentLayout = (ViewGroup)fragmentLayout.getChildAt(0);

但返回的孩子不是我要搜索的孩子。

2 个答案:

答案 0 :(得分:1)

ScrollView只能有一个孩子。如果你对你的滚动视图有相对或线性的parrentview,你可以得到你想要的孩子:

for(int i=0; i<((ViewGroup)v).getChildCount(); ++i) {
    View nextChild = ((ViewGroup)v).getChildAt(i);
}

其中v是parrentview

答案 1 :(得分:1)

如果我理解正确,你可以像使用findViewById()的其他视图/布局一样获取它,如果fragmentLayout是ScrollView,那么你知道它的子布局存在,你可以像普通布局一样处理它。

编辑: 好的,我刚看了你的评论,你不想给ids,我认为这不是一个好的IDea。但在这种情况下,为什么不在您的布局中将scrollView留空并手动添加子项呢?一旦你注意到它,它是一个ScrollView,创建一个新的LinearLayout(或其他),添加你想要的视图,然后将它添加到滚动视图......?

但我真的没有理由不给它一个身份......?