web-dev-qa-db-fra.com

Différence entre le bouton avec image, ImageButton et ImageView cliquable?

Y a-t-il une différence entre Button avec image, ImageButton et cliquable ImageView?

67
Snake

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
85
Frank Sposaro

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.

12
kabuko
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)
9
Mohanish

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.

4
Groovee60
button instanceof ImageButton == false;
imageButton instanceof Button == false;
button instanceof TextView == true;
imageButton instanceof ImageView == true;
0
Shwarz Andrei