Разница между кнопкой с изображением, ImageButton и интерактивным ImageView?

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

Solutions Collecting From Web of "Разница между кнопкой с изображением, ImageButton и интерактивным ImageView?"

Это, вероятно, охватывает только часть различий, было бы полезно посмотреть на дерево 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 

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

 ImageView = Display Images (android:src) 

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

 Button = set text and (android:background) 

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

 button instanceof ImageButton == false; imageButton instanceof Button == false; button instanceof TextView == true; imageButton instanceof ImageView == true;