Difference between Button with image, ImageButton, and clickable ImageView?

江枫思渺然 提交于 2019-12-02 19:48:18
Frank Sposaro

This probably only covers part of the differences, it would be helpful to actually look at the Android Source tree to see exactly what's going on.

ImageButtons has push states, where as a clickable image does not. You also can't call setText for ImageButton, you can with a regular button.

They all derive from view, but looking at the following extends chain may help a little.

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

The differences can be subtle. The most direct way to understanding this is to start with looking at the docs. If you look at the docs for Button you can see that Button is derived from TextView. ImageButton on the other hand is derived from ImageView. So fundamentally, a Button can have text and is clickable, whereas an ImageButton is a bit more flexible in how you set the image. It has methods from its ImageView base class like setImageURI which a Button does not. One of the differences between these two and just a plain ImageView is that you can have button states which is explained in both of the Button and ImageButton docs.

Mohanish
ImageView = Display Images (android:src)

ImageButton = Diaplay Images as imageView and get click effect as button (android:src) and cannot set text to it.

Button = set text and (android:background)

One other aspect not mentioned in the previous answers is the usage within (for instance) a list item view. If you an embed a Button or ImageButton, the rest of the list item will not receive touch events. But if you use ImageView, it will.

button instanceof ImageButton == false;
imageButton instanceof Button == false;
button instanceof TextView == true;
imageButton instanceof ImageView == true;
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!