2012-02-23 33 views

Trả lời

76

Điều này có thể chỉ bao gồm một phần của sự khác biệt, sẽ rất hữu ích khi thực sự nhìn vào cây Nguồn Android để xem chính xác những gì đang diễn ra.

ImageButtons có trạng thái đẩy, trong đó dưới dạng hình ảnh có thể nhấp không. Bạn cũng không thể gọi setText cho ImageButton, bạn có thể sử dụng nút thông thường.

Tất cả đều xuất phát từ chế độ xem, nhưng nhìn vào chuỗi mở rộng sau đây có thể giúp ích một chút.

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

so

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

Hoàn hảo điều này là rất tốt trong câu trả lời chuyên sâu. Cảm ơn – Snake

+0

Vui nhộn. Một ví dụ khác về các vấn đề gây ra do thiếu đa thừa kế (một loại). –

10

Sự khác biệt có thể tinh tế. Cách trực tiếp nhất để hiểu điều này là bắt đầu bằng cách xem các tài liệu. Nếu bạn nhìn vào số docs for Button, bạn có thể thấy rằng Button có nguồn gốc từ TextView. Mặt khác, ImageButton có nguồn gốc từ ImageView. Về cơ bản, Button có thể có văn bản và có thể nhấp được, trong khi đó, ImageButton linh hoạt hơn một chút về cách bạn đặt hình ảnh. Nó có các phương thức từ lớp cơ sở ImageView giống như setImageURI của nó mà không có Button. Một trong những khác biệt giữa hai loại này và chỉ là một số đơn giản là ImageView là bạn có thể có các trạng thái nút được giải thích trong cả hai tài liệu ButtonImageButton.

+0

Cảm ơn câu trả lời – Snake

9
ImageView = Display Images (android:src) 

ImageButton = Diaplay hình ảnh như imageViewget click hiệu lực kể nút (android:src) và không thể thiết lập văn bản đến nó.

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

Cảm ơn bạn đây là sự khác biệt về cú pháp của cài đặt. Tôi cần phải biết sự khác biệt actuall (khi sử dụng hoặc cái nhìn khác) – Snake

3

Một khía cạnh khác không được đề cập trong câu trả lời trước là cách sử dụng trong (ví dụ) chế độ xem danh sách. Nếu bạn nhúng một Nút hoặc ImageButton, phần còn lại của mục danh sách sẽ không nhận được sự kiện chạm. Nhưng nếu bạn sử dụng ImageView, nó sẽ.

1
button instanceof ImageButton == false; 
imageButton instanceof Button == false; 
button instanceof TextView == true; 
imageButton instanceof ImageView == true; 
Các vấn đề liên quan