2010-09-17 17 views

Respuesta

3

Estoy buscando esto también, pero pensé que podría ser más fácil agregar una identificación al ViewGroup más externo.

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/outer"> 
    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 

Voy a seguir buscando unos minutos más. Me gusta, así que puedo usar findViewWithTag desde el diseño más externo.

+1

Esto también funciona con findViewById. No me había dado cuenta de que podía poner una identificación en la etiqueta más externa del xml. Así es como uso: thisView = (Ver) findViewById (R.id.parent_view); –

49

que era capaz de llegar a los contenidos de una actividad con esta llamada:

ViewGroup view = (ViewGroup)getWindow().getDecorView(); 

Usted probablemente debería comprobar que getDecorView devuelve un ViewGroup instanceof para todos los casos, pero con un LinearLayout en la Actividad el código anterior funciona bien. Para llegar a la LinearLayout A continuación, podría simplemente:

LinearLayout content = (LinearLayout)view.getChildAt(0); 

Y si tiene una función como esta:

void logContentView(View parent, String indent) { 
    Log.i("test", indent + parent.getClass().getName()); 
    if (parent instanceof ViewGroup) { 
     ViewGroup group = (ViewGroup)parent; 
     for (int i = 0; i < group.getChildCount(); i++) 
      logContentView(group.getChildAt(i), indent + " "); 
    } 
} 

Usted puede iterar a través de todos los puntos de vista y registrar sus nombres de clases con la siguiente llamada dentro de su actividad:

logContentView(getWindow().getDecorView(), ""); 
+0

+1 ViewGroup view = usado (ViewGroup) getWindow(). GetDecorView(); para borrar todas las vistas de una actividad llamando a view.removeAllViews(); - ¡gracias por la respuesta! – AgentKnopf

43

Siguiendo la línea hará el truco:

findViewById(android.R.id.content); 

que es esencialmente igual (que tiene que ser llamado en el contexto de una actividad)

this.findViewById(android.R.id.content); 
+0

funciona como un encanto. – atreat

Cuestiones relacionadas