web-dev-qa-db-fra.com

Obtenir la vue racine de l'activité en cours

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

568
Lalith

Si vous avez besoin d’une vue racine de votre activité (pour pouvoir 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 l'a signalé Booger, il se peut que cela se trouve derrière la barre de navigation (avec le bouton Précédent, etc.) sur certains appareils (mais il semble que ce n'est pas le cas sur la plupart des appareils).

Si vous avez besoin d’une vue que vous avez ajoutée à votre activité à l’aide de la méthode setContentView(), vous pouvez l’utiliser

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

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

948
Dmitry Ryadnenko

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

final ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
            .findViewById(Android.R.id.content)).getChildAt(0);
249
pottedmeat

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

getWindow().getDecorView().getRootView()

donner la même vue de ce que nous obtenons 

anyview.getRootView();

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

et 

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

donner à son enfant

Android.widget.FrameLayout@#######

Veuillez confirmer.

119
Sudar Nimalan

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

Dans notre activité, nous pouvons obtenir la vue root avec: 

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

ou 

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

À Kotlin, nous pouvons le faire un peu plus court:

val rootView = window.decorView.rootView
5
Artem Botnev

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

2
Khemraj

si vous êtes dans une activité, supposez 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 pouvez utiliser 

getWindow().getDecorView();

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

0
bowman han

obtenir la vue de l'activité en cours

dans n'importe quel onClick, nous allons obtenir "View View", en utilisant "view", obtenez le rootView.

Vue vue = view.getRootView ();

et pour obtenir View in fragment

Vue vue = FragmentClass.getView ();

0
user3509903