我的一个活动可能包含不同的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);
但返回的孩子不是我要搜索的孩子。
答案 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(或其他),添加你想要的视图,然后将它添加到滚动视图......?
但我真的没有理由不给它一个身份......?