Remplacer une vue avec un autre point de vue, Par code
Je veux remplacer un point de vue avec les autres par le code
Par exemple, j'ai besoin de changer un imageview
à progressBar
par le code.
public void changeToProgressBar(ImageView imageview,Context context){
ProgressBar one = new ProgressBar(context);
one.setLayoutParams(imageview.getLayoutParams());
imageview.setVisibility(View.GONE);
one.setVisibility(View.VISIBLE);
//NOW I NEED TO PLACE 'one' EXACTLY THE PLACE WHERE 'imageview' WAS THERE
}
J'ai besoin d'utiliser ce lieu de nombreux. Je sais à définir par l'envoi de la mère viewgroup
.
Est-il de toute façon à obtenir le parent viewgroup
de imageview
Grâce
- la même question a été posée de ici 🙂
Vous devez vous connecter pour publier un commentaire.
C'est trivial à faire et d'autres affiches ont lié ou fait allusion à la solution. Vous pouvez obtenir le parent de la Vue par Vue.getParent(). Vous avez besoin de convertir la valeur retournée pour un ViewGroup (q: puis-Vue parent d'être autre chose qu'un ViewGroup?). Une fois que vous avez le parent comme un ViewGroup vous pouvez faire ViewGroup.removeChild(viewToRemove) pour supprimer l'ancien point de vue et l'ajout de la nouvelle à l'aide de ViewGroup.addChild(viewToAdd).
Vous pouvez également ajouter le nouveau point de vue au même indice que la suppression de vue pour vous assurer que vous ne mettez pas le nouveau point de vue au-dessus ou en-dessous d'autres points de vue. Voici un utilitaire complet de classe que vous pouvez utiliser:
Quelque chose à considérer est que vous allez perdre de positionnement en un rapport de mise en page lorsque vous remplacez un point de vue de l'autre. Une solution à ce problème serait de faire en sorte que le point de vue que vous souhaitez remplacer, est enveloppé dans un autre point de vue et qui a enveloppé conteneur de vue est celui qui est placé dans une relative mise en page.
Récupérer la vue que vous souhaitez modifier en appelant findViewById() à partir du niveau d'activité
http://developer.android.com/reference/android/app/Activity.html#findViewById(int)
Ensuite trouver le sous affichage que vous souhaitez modifier
http://developer.android.com/reference/android/view/View.html#findViewById(int)
Ensuite, utilisez les fonctions de http://developer.android.com/reference/android/view/ViewGroup.html de manipuler la vue.
Comme User333 décrit ce que pourrait être une solution..
Il est également possible de supprimer l'imageview en appelant
yourview.removeView(imageview)
et ensuite créer votre barre de progression et le mettre à l'intérieur de la vue plutôt que paryourview.addView(progressbar)
yourview
forme monimageview
Vous pouvez modifier Android Activités de vue de toute autre simple classe java ou dans d'autres activités.
vous avez seulement besoin de passer de l'affichage en cours et d'obtenir votre élément par ce point de vue que vous souhaitez modifier
Comme :
Classe : changeLayout
Remarque : en Passant de la vue qui vous rend capable de changer toute activité vue de l'extérieur d'une Activité.
Je pense que la suite devrait être la meilleure approche dans le présent nous n'avons pas besoin de définir la disposition params.
Je suis sûr qu'à la suite de lien n'est pas seulement de vous aider, mais vous montre même la direction de votre exigence. https://stackoverflow.com/a/3760027/3133932
Pour cela, de prendre à la fois
imageview
etprogressBar
et définir la visibilité en fonction de vos besoins.Par exemple
Si vous voulez
progressBar
pour être visible, mettresetvisibility(Visibility.GONE)
pourimageview
et mettresetvisibility(Visibility.VISIBLE)
pourprogressBar
yourview
forme monimageview