287 votes

Comment obtenir la vue du contenu de l'activité ?

Quelle méthode dois-je appeler pour savoir si une Activity a son contentView (une fois que la méthode setContentView() a été appelé) ?

534voto

ernest Points 1996
this.getWindow().getDecorView().findViewById(android.R.id.content)

ou

this.findViewById(android.R.id.content)

ou

this.findViewById(android.R.id.content).getRootView()

5 votes

Ou getWindow().findViewById(android.R.id.content) :)

1 votes

Cela fonctionne bien en ce qui concerne la récupération de la vue parentale... Mais si j'essaie this.findViewById(Android.R.id.content).setBackgroundDrawable(d) ; cela ne fonctionne pas.... Pouvez-vous me suggérer quelque chose ? Merci d'avance

3 votes

Si vous installez une présentation à partir de XML à l'aide de setContentView(R.layout.my_view) , ce qui renvoie le parent de cette disposition.

23voto

papachan Points 900

Vous pouvez récupérer la vue si vous attribuez un identifiant à votre présentation.

<RelativeLayout
    android:id="@+id/my_relative_layout_id"

Et l'appeler à partir de findViewById ...

0 votes

C'est la façon la plus robuste d'obtenir la racine d'une disposition installée.

3 votes

Que passez-vous à findViewById ?

2 votes

@trans View contentView = findViewById(R.id.my_relative_layout_id) ;

12voto

mike jones Points 470

Pourquoi pas

View view = Activity.getCurrentFocus();

0 votes

Comment se fait-il qu'il n'y ait pas plus de pouces en l'air ? Fonctionne très bien !

1 votes

@aeskreis car dans mon cas il renvoie null currentFocus?.let { ... }

10voto

William Tate Points 16777

Vous pouvez essayer View.getRootView() .

5voto

Chris Points 3853

Vous pouvez également remplacer onContentChanged() qui est, entre autres, déclenché lorsque setContentView() a été appelé.

0 votes

La réponse d'Ernest vous donnera la vue focalisée actuelle, même si elle contient une vue défilante.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X