2012-06-11 28 views
2

Java或C#的回答都很好(我们使用MonoDroid的)安卓入门查看添加LayoutInflator

我成功的一个控件添加到LinearLayout中有:

LayoutInflater _inflatorservice = (LayoutInflater)this.GetSystemService(Context.LayoutInflaterService); 
    var viewContainer = _inflatorservice.Inflate(Resource.Layout.ReportItImageButton, myLinearLayout); 

我如何再拿到一个参考到刚刚添加的视图?我用这种方式添加了许多相同的控件,因此需要将第n个项目添加到布局中。

+1

((查看)viewContainer)? –

+0

这给了我linearlayout容器,但不是刚刚添加的内容 –

+1

您可以发布您的ReportItImageButton.xml布局吗?如果你从'Inflate'返回'LinearLayout',那可能是你在膨胀... – kabuko

回答

3

这个工作,它得到最新的产品加入假设产品Button型specfied。

LayoutInflater _inflatorservice = (LayoutInflater)this.GetSystemService(
    Context.LayoutInflaterService); 
var layout = _inflatorservice.Inflate(
    Resource.Layout.ReportItImageButton, layoutImages) as LinearLayout; 

if (layout != null) 
{ 
    var b = layout.GetChildAt(layout.ChildCount - 1) as Button; 
    if (b != null) 
    { 
    } 
} 
+0

看起来你的XML文件并不完美。将LinearLayout从中排除会更好。 –

1

还有一个额外的参数。它不会将您的虚拟视图添加到myLinearLayout,但仍然返回它的View对象。

var viewObj = _inflatorservice.Inflate(
    Resource.Layout.ReportItImageButton, myLinearLayout, false); 

需要注意的是,例如,如果添加了LinearLayout那么你会得到一个LinearLayout回来。此方法返回您的XML布局的视图,因此它可以是任何类型的View

1
View v = myLinearLayout.findViewById(R.id.myViewId) 

myViewId应该是一样的ID在你ReportItImageButton.xml文件