Y a-t-il une différence entre Button
avec image, ImageButton
et cliquable ImageView
?
Cela ne couvre probablement qu'une partie des différences, il serait utile de regarder réellement l'arborescence Android Source pour voir exactement ce qui se passe.
ImageButtons a des états Push, contrairement à une image cliquable. Vous ne pouvez pas non plus appeler setText pour ImageButton, vous pouvez le faire avec un bouton normal.
Ils dérivent tous de la vue, mais en regardant la chaîne d'extension suivante peut aider un peu.
Java.lang.Object
↳ Android.view.View
↳ Android.widget.ImageView
↳ Android.widget.ImageButton
versus
Java.lang.Object
↳ Android.view.View
↳ Android.widget.TextView
↳ Android.widget.Button
Les différences peuvent être subtiles. La façon la plus directe de comprendre cela est de commencer par regarder les documents. Si vous regardez les documents pour Button vous pouvez voir que Button
est dérivé de TextView
. ImageButton
d'autre part est dérivé de ImageView
. Donc, fondamentalement, un Button
peut avoir du texte et est cliquable, tandis qu'un ImageButton
est un peu plus flexible dans la façon dont vous définissez l'image. Il a des méthodes de sa classe de base ImageView
comme setImageURI
, ce qui n'est pas le cas d'un Button
. L'une des différences entre ces deux et un simple ImageView
est que vous pouvez avoir des états de bouton qui sont expliqués dans les documents Button
et ImageButton
.
ImageView = Display Images (Android:src)
ImageButton = Diaplay
Images comme imageView
et get click
effet comme bouton (Android:src)
et ne peut pas lui affecter de texte.
Button = set text and (Android:background)
Un autre aspect non mentionné dans les réponses précédentes est l'utilisation dans (par exemple) une vue d'élément de liste. Si vous intégrez un bouton ou un bouton d'image, le reste de l'élément de liste ne recevra pas d'événements tactiles. Mais si vous utilisez ImageView, ce sera le cas.
button instanceof ImageButton == false;
imageButton instanceof Button == false;
button instanceof TextView == true;
imageButton instanceof ImageView == true;