2012-02-23 42 views

回答

76

这可能只包含部分差异,但实际查看Android源代码树以查看究竟发生了什么会有所帮助。

ImageButtons具有推送状态,其中可点击图像不会。 您也无法为ImageButton调用setText,您可以使用常规按钮。

它们都来自视图,但看下面的扩展链可能会有所帮助。

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

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

完美的是深入的答案。谢谢 – Snake 2012-02-24 04:06:16

+0

好笑。由于缺乏(某种)多重继承而导致的问题的另一个例子。 – 2013-11-08 10:11:11

10

的差异可以是细微的。理解这个最直接的方法是从看文档开始。如果你看看docs for Button,你可以看到Button来自TextView。另一方面,ImageButton源自ImageView。因此,基本上,Button可以有文字并且可以点击,而ImageButton在设置图片的方式上更加灵活。它有ImageView基类,如setImageURI,其中Button没有。这两者之间的差异之一,只是一个简单的ImageView是你可以有按钮状态,这在ButtonImageButton文档中都有解释。

+0

感谢您的回答 – Snake 2012-02-24 04:06:41

9
ImageView = Display Images (android:src) 

ImageButton = Diaplay图像作为imageViewget click效果按钮(android:src),不能设置文本。

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

谢谢你这是设置的语法差异。我需要知道实际差异(何时使用或不同的外观) – Snake 2012-02-25 18:30:13

3

在前面的答案中没有提到的另一个方面是(例如)列表项视图内的用法。如果您嵌入了Button或ImageButton,则列表项的其余部分将不会收到触摸事件。但是如果你使用ImageView,它会。

1
button instanceof ImageButton == false; 
imageButton instanceof Button == false; 
button instanceof TextView == true; 
imageButton instanceof ImageView == true; 
相关问题