以编程方式,我有一个RelativeLayout
和TextView
(称为标题),其定义如下:
RelativeLayout layout = new RelativeLayout(this);
final RelativeLayout.LayoutParams parameters_title =
new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
title.setLayoutParams(parameters_title);
layout.addView(title,parameters_title);
我打算稍后添加更多textviews
和buttons
。但就目前而言,我想将RelativeLayout
“转换”(我不确定如何将其转换为单词),以便将View
放入WindowManager
。我试图像这样使用LayoutInflater
但它不起作用
LayoutInflater layoutInflater =
(LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
myView = layoutInflater.inflate(layout, null );
然后我们的目标是将myView
放入WindowManger
到addView
。如何从我的View
获得RelativeLayout
?
答案 0 :(得分:0)
RelativeLayout
扩展ViewGroup
,其中包含getChildCount()
和getChildAt(int index)
方法。所以你可以尝试的是:
for(int i=0;i<relativeLayout.getChildCount();i++){
View child=relativeLayout.getChildAt(i);
//your processing....
}
答案 1 :(得分:0)
您可以通过getChildAt执行此操作,但您必须保持要从布局中获取的视图的位置。为避免这种情况,您可以为视图设置id并使用findViewById()获取视图。如果从xml中扩展视图,您将获得与xml相同的视图。如果你向relativeLayout添加一些新的视图,它将不会影响你从xml中膨胀的视图。
添加视图时:
myView.setId(id);
layout.addView(myView);
检索时
View myView = layout.findViewById(id);