2010-09-17 12 views

Odpowiedz

3

Szukam również tego, ale pomyślałem, że łatwiej będzie dodać identyfikator do najbardziej widocznej grupy ViewGroup.

<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"> 

Będę jednak szukał jeszcze kilku minut. Wchodzę w to, abym mógł użyć findViewWithTag z najbardziej zewnętrznego układu.

+1

ta działa również z findViewById. Nie zdawałem sobie sprawy, że możesz umieścić identyfikator w zewnętrznym tagu xml. W ten sposób używam: thisView = (View) findViewById (R.id.parent_view); –

49

byłem w stanie dostać się do zawartości danej działalności z tej rozmowy:

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

Powinieneś raczej sprawdzenia, getDecorView zwraca ViewGroup instanceof dla wszystkich przypadków, ale z LinearLayout w Działaniu powyższy kod działa dobrze. Aby dostać się do LinearLayout mogłeś wtedy tylko:

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

A jeśli masz funkcję tak:

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 + " "); 
    } 
} 

Można iterację wszystkich widokach i rejestrować swoje nazwy klas z poniższej rozmowy wewnątrz aktywność:

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

+1 Używany widok ViewGroup = (ViewGroup) getWindow(). GetDecorView(); aby wyczyścić wszystkie widoki z działania, wywołując metodę view.removeAllViews(); - Dziękuję za odpowiedź! – AgentKnopf

43

następujący wiersz rade:

findViewById(android.R.id.content); 

jest zasadniczo taka sama jak (to musi być wywołana w kontekście działalności)

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

działa jak urok. – atreat

Powiązane problemy