2012-01-10 2 views
1

В Activity.OnContentChanged я хотел бы перебрать все элементы управления, чтобы посмотреть их теги.MonoDroid: Итерации над элементами управления в действии?

Я предполагаю, что это как-то связано с базой. У меня есть дети, но я не могу понять, как на самом деле получить детей.

EDIT: ViewGroup, базовый класс для большинства макетов, имеет GetChildCount и GetChildAt. Но я до сих пор не могу понять, как перейти из Activity на этот макет корневого уровня.

ответ

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

Вы можете присвоить идентификатор корневого элемента макета и получить доступ к нему через что:

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