Question Obtenir la vue racine de l'activité en cours


Je sais comment obtenir la vue racine avec View.getRootView (). Je suis également en mesure d'obtenir la vue d'un bouton onClick événement où l'argument est un Vue. Mais comment puis-je obtenir le vue dans un activité?


528
2017-12-20 00:40


origine


Réponses:


Si vous avez besoin d'une vue racine de votre activité (pour y ajouter votre contenu), utilisez

findViewById(android.R.id.content)

En outre, il a été signalé que sur certains appareils, vous devez utiliser

getWindow().getDecorView().findViewById(android.R.id.content)

au lieu.

Veuillez noter que, comme Booger l'a signalé, il se peut que ce soit derrière la barre de navigation (avec le bouton de retour, etc.) sur certains appareils (mais cela ne semble pas être le cas sur la plupart des appareils).

Si vous devez obtenir une vue que vous avez ajoutée à votre activité en utilisant setContentView() méthode alors que la viande en pot a écrit que vous pouvez utiliser

final ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
            .findViewById(android.R.id.content)).getChildAt(0);

Mais mieux vaut simplement définir id à cette vue dans votre mise en page XML et utiliser cet ID à la place.


877
2017-12-20 08:58



C'est ce que j'utilise pour obtenir la vue racine telle qu'elle se trouve dans le fichier XML affecté à setContentView:

final ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
            .findViewById(android.R.id.content)).getChildAt(0);

239
2018-02-21 17:48



J'ai testé cela dans Android 4.0.3, seulement:

getWindow().getDecorView().getRootView()

donner la même vue ce que nous obtenons

anyview.getRootView();

com.android.internal.policy.impl.PhoneWindow$DecorView@#########

et

getWindow().getDecorView().findViewById(android.R.id.content)

donner un enfant de son

android.widget.FrameLayout@#######

Veuillez confirmer.


110
2017-07-19 03:38



Obtenez la vue racine de l'activité en cours.

Dans notre activité, nous pouvons obtenir le root voir avec:

ViewGroup rootView = (ViewGroup) ((ViewGroup) this
            .findViewById(android.R.id.content)).getChildAt(0);

ou

View rootView = getWindow().getDecorView().getRootView();

16
2017-11-29 20:23



Juste incase Quelqu'un a besoin d'un moyen plus facile:

Le code suivant donne une vue de l'ensemble de l'activité:

View v1 = getWindow().getDecorView().getRootView();

Pour obtenir une vue certian dans l'activité, par exemple un imageView dans l'activité, ajoutez simplement l'identifiant de la vue que vous voulez obtenir:

View v1 = getWindow().getDecorView().getRootView().findViewById(R.id.imageView1);

J'espère que cela aide quelqu'un


14
2018-03-26 00:04



anyview.getRootView(); sera le moyen le plus facile.


1
2018-05-13 18:49



Si vous êtes dans une activité, supposons qu'il n'y a qu'une seule vue racine, vous pouvez l'obtenir comme ceci.

ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
        .findViewById(android.R.id.content)).getChildAt(0);

vous pouvez ensuite le lancer dans votre vraie classe

ou vous pourriez utiliser

getWindow().getDecorView();

notez que cela inclura la vue de la barre d'action, votre vue est en dessous de la vue de la barre d'actions


0
2017-07-28 09:02



pour avoir une vue de l'activité en cours

dans tout onClick, nous obtiendrons "View View", en utilisant "view" obtenir le rootView.

Voir vue = view.getRootView ();

et pour obtenir View in fragment

Voir vue = FragmentClass.getView ();


0
2018-04-12 07:43