2012-02-23 14 views

Respuesta

76

Esto probablemente sólo cubre parte de las diferencias, sería de gran ayuda a desviar la mirada hacia el árbol Android Fuente para ver exactamente lo que está pasando.

ImageButtons tiene empujar estados, donde como una imagen seleccionable no lo hace. Tampoco puede llamar a setText para ImageButton, puede hacerlo con un botón normal.

Todos ellos derivan de la vista, pero mirando a la siguiente extiende cadena puede ayudar un poco.

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

frente

java.lang.Object 
↳ android.view.View 
    ↳ android.widget.TextView 
     ↳ android.widget.Button 
+0

perfecto esto es grande en respuesta profundidad. Gracias – Snake

+0

Gracioso. Otro ejemplo de problemas causados ​​por la falta de (una especie de) herencia múltiple. –

10

Las diferencias pueden ser sutiles. La forma más directa de entender esto es comenzar mirando los documentos. Si nos fijamos en el docs for Button, puede ver que Button se deriva de TextView. ImageButton por otro lado se deriva de ImageView. De manera fundamental, un Button puede tener texto y se puede hacer clic en él, mientras que un ImageButton es un poco más flexible en la forma de establecer la imagen. Tiene métodos de su ImageView clase base como setImageURI que no es Button. Una de las diferencias entre estos dos y simplemente un simple ImageView es que puede tener estados de botón que se explican en los documentos Button y .

+0

Gracias por la respuesta – Snake

9
ImageView = Display Images (android:src) 

ImageButton = Diaplay imágenes como imageView y get click efecto que el botón de (android:src) y no pueden fijar el texto a él.

Button = set text and (android:background) 
+0

Gracias esta es la diferencia de sintaxis de la configuración. Necesitaba saber las diferencias actuales (cuándo usar o el aspecto diferente) – Snake

3

Otro aspecto no mencionado en las respuestas anteriores es el uso dentro de (por ejemplo) una vista de elemento de lista. Si inserta un botón o ImageButton, el resto del elemento de la lista no recibirá eventos táctiles. Pero si usa ImageView, lo hará.

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