带有图像的按钮,ImageButton和可单击的ImageView之间的区别?


Answers:


88

这可能仅涵盖了部分差异,实际上查看Android Source树以了解发生了什么将很有帮助。

ImageButtons具有推送状态,而可点击的图像则没有。您也不能使用ImageButton调用setText,而可以使用常规按钮。

它们都是从视图派生的,但是查看以下扩展链可能会有所帮助。

java.lang.Objectandroid.view.Viewandroid.widget.ImageViewandroid.widget.ImageButton

java.lang.Objectandroid.view.Viewandroid.widget.TextViewandroid.widget.Button

滑稽。缺少(某种)多重继承导致的问题的另一个示例。
显示名称

何时使用一个与另一个?
IgorGanapolsky '19

1
推送状态到底是什么?
Shikhar Mainalee

@ShikharMainalee按下/单击按钮时的状态。也称为压缩或关闭状态。
Frank Sposaro

14

差异可能很小。理解这一点的最直接方法是从查看文档开始。如果您查看Button文档,您会发现它Button源自TextViewImageButton另一方面是从ImageView。因此,从根本上讲,aButton可以包含文本并且可以单击,而ImageButtona在设置图像方面更加灵活。它具有来自其ImageView基类的方法,setImageURI而aButton则没有。两者之间的区别与普通的区别之一ImageView是,您可以拥有按钮状态,并且在ButtonImageButton文档中都对此进行了说明。


9
ImageView = Display Images (android:src)

ImageButton = Diaplay图像为imageViewget click效果为按钮(android:src),无法为其设置文本。

Button = set text and (android:background)

谢谢,这是设置的语法差异。我需要知道实际的差异(何时使用或外观不同)
Snake

4

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


你有这个来源吗?我刚遇到这个问题ImageButton,但Button背景图像却没有
Calvin Li

恐怕我再也无法访问该源了。但这很简单-按钮形成了触摸事件,而图像视图却没有。我确定还有其他方法可以将事件传递到上游,但这是一个简单的修复程序,不需要进行重构。
Groovee60 '18年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.