MonoDroid: перебирать элементы управления в Activity? - PullRequest
1 голос
/ 10 января 2012

В Activity.OnContentChanged я хотел бы перебрать все элементы управления для поиска их тегов.

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

РЕДАКТИРОВАТЬ: ViewGroup, базовый класс для большинства макетов, имеет GetChildCount и GetChildAt. Но я все еще не могу понять, как перейти от Activity к этому макету корневого уровня.

Ответы [ 2 ]

3 голосов
/ 10 января 2012

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

<?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);
}
0 голосов
/ 10 января 2012
var viewGroup = this.Window.DecorView as ViewGroup;
if(viewGroup != null){
for (int i = 0; i < view.ChildCount; i++)
{
    var control = view.GetChildAt(i);
} 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...