从RelativeLayout获取视图

时间:2013-08-24 09:48:30

标签: android android-layout relativelayout

以编程方式,我有一个RelativeLayoutTextView(称为标题),其定义如下:

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);

我打算稍后添加更多textviewsbuttons。但就目前而言,我想将RelativeLayout“转换”(我不确定如何将其转换为单词),以便将View放入WindowManager。我试图像这样使用LayoutInflater但它不起作用

LayoutInflater layoutInflater = 
       (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
myView = layoutInflater.inflate(layout, null );

然后我们的目标是将myView放入WindowMangeraddView。如何从我的View获得RelativeLayout

2 个答案:

答案 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);