Разница между кнопкой с изображением, ImageButton и кликабельным ImageView? - PullRequest
66 голосов
/ 24 февраля 2012

Есть ли разница между Button с изображением, ImageButton и кликабельным ImageView?

Ответы [ 5 ]

85 голосов
/ 24 февраля 2012

Это, вероятно, покрывает только часть различий, было бы полезно взглянуть на дерево исходных текстов Android, чтобы точно увидеть, что происходит.

ImageButtons имеет состояния push, а в отличие от кликабельного изображения.Вы также не можете вызвать setText для ImageButton, вы можете с помощью обычной кнопки.

Все они происходят из вида, но просмотр следующей цепочки расширений может немного помочь.

java.lang.Object
↳ android.view.View
   ↳ android.widget.ImageView
       ↳ android.widget.ImageButton

против

java.lang.Object
↳ android.view.View
   ↳ android.widget.TextView
       ↳ android.widget.Button
12 голосов
/ 24 февраля 2012

Различия могут быть тонкими.Самый прямой способ понять это - начать с просмотра документов.Если вы посмотрите на документы для кнопки , вы увидите, что Button является производным от TextView.ImageButton, с другой стороны, является производным от ImageView.Таким образом, по сути, Button может иметь текст и может быть кликабельным, тогда как ImageButton немного более гибок в настройке изображения.У него есть методы из базового класса ImageView, такие как setImageURI, которого нет у Button.Одно из различий между этими двумя и простыми ImageView заключается в том, что у вас могут быть состояния кнопок, что объясняется в документах Button и ImageButton.

9 голосов
/ 25 февраля 2012
ImageView = Display Images (android:src)

ImageButton = Diaplay Изображения как imageView и get click действуют как кнопка (android:src) и не могут установить для него текст.

4 голосов
/ 25 января 2014

Еще один аспект, не упомянутый в предыдущих ответах, - это использование (например) в представлении элемента списка.Если вы встраиваете кнопку или ImageButton, остальная часть списка не будет получать сенсорные события.Но если вы используете ImageView, он будет.

0 голосов
/ 07 января 2016
button instanceof ImageButton == false;
imageButton instanceof Button == false;
button instanceof TextView == true;
imageButton instanceof ImageView == true;
...