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é ?
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.
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);
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.
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();
À Kotlin, nous pouvons le faire un peu plus court:
val rootView = window.decorView.rootView
anyview.getRootView();
sera le moyen le plus simple.
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
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 ();