L'Activité de la classe a un setContentView() la méthode. Le PopupWindow Classe a un getContentView() la méthode, mais rien d'autre ne. Est-il une autre façon d'obtenir le contenu principal de la vue pour une activité?
Réponses
Trop de publicités?J'ai été en mesure d'obtenir le contenu d'une Activité avec cet appel:
ViewGroup view = (ViewGroup)getWindow().getDecorView();
Vous devriez probablement vérifier que getDecorView retourne un instanceof ViewGroup pour tous les cas, mais avec un LinearLayout dans l'Activité le code ci-dessus fonctionne très bien. Pour obtenir le LinearLayout vous pouvez alors simplement:
LinearLayout content = (LinearLayout)view.getChildAt(0);
Et si vous avez une fonction comme ceci:
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 + " ");
}
}
Vous pourriez parcourir tous les points de vue et d'enregistrer les noms de classe avec l'appel suivant à l'intérieur de votre Activité:
logContentView(getWindow().getDecorView(), "");
Je suis à la recherche pour cela, mais j'ai juste pensé qu'il pourrait être plus facile d'ajouter un id pour l'extérieur 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">
Je vais continuer à chercher pour quelques minutes de plus, bien que. Je suis en elle, de sorte que je peux utiliser findViewWithTag de l'extrème mise en page.