Есть ли разница между Button
с изображением, ImageButton
и clickable ImageView
?
Разница между кнопкой с изображением, ImageButton и интерактивным ImageView?
Ответ 1
Это, вероятно, охватывает только часть различий, было бы полезно посмотреть на дерево 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
Ответ 2
Различия могут быть незначительными. Самый прямой способ понять это - начать с рассмотрения документов. Если вы посмотрите на docs для Button, вы увидите, что Button
происходит от TextView
. ImageButton
, с другой стороны, получен из ImageView
. В принципе, Button
может иметь текст и доступен для кликов, тогда как ImageButton
является более гибким в том, как вы устанавливаете изображение. Он имеет методы из своего базового класса ImageView
, такого как setImageURI
, который a Button
не имеет. Одно из различий между этими двумя и просто обычным ImageView
заключается в том, что вы можете иметь состояния кнопок, которые объясняются в обоих документах Button
и ImageButton
.
Ответ 3
ImageView = Display Images (android:src)
ImageButton = Diaplay
Изображения как imageView
и get click
действуют как кнопка (android:src)
и не могут установить для него текст.
Button = set text and (android:background)
Ответ 4
Еще один аспект, не упомянутый в предыдущих ответах, - это использование внутри (например) представления элемента списка. Если вы вставляете Button или ImageButton, остальная часть элемента списка не будет получать события касания. Но если вы используете ImageView, это будет.
Ответ 5
button instanceof ImageButton == false;
imageButton instanceof Button == false;
button instanceof TextView == true;
imageButton instanceof ImageView == true;