MonoDroid:迭代一个Activity中的控件?

时间:2012-01-10 08:10:28

标签: android xamarin.android

在Activity.OnContentChanged中,我想迭代所有控件以查看其标签。

我认为它与base.Window.HasChildren有关,但我无法弄清楚如何真正让孩子们接受。

编辑:ViewGroup是大多数布局的基类,具有GetChildCount和GetChildAt。但我仍然无法弄清楚如何从Activity到root级别的布局。

2 个答案:

答案 0 :(得分:3)

您可以为布局的根元素分配ID,并通过以下方式访问它:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/Root"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="1"/>
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="2"/>
</LinearLayout>

然后在您的活动中,您可以执行以下操作:

var root = FindViewById<LinearLayout>(Resource.Id.Root);

for (int i = 0; i < root.ChildCount; i++)
{
    Console.WriteLine(root.GetChildAt(i).Id);
}

答案 1 :(得分:0)

var viewGroup = this.Window.DecorView as ViewGroup;
if(viewGroup != null){
for (int i = 0; i < view.ChildCount; i++)
{
    var control = view.GetChildAt(i);
} 
}