可点击的ImageView和ImageButton之间的区别

时间:2011-05-01 07:32:23

标签: android android-imageview imagebutton

我只是想知道设置为可点击的ImageViewImageButton之间是否存在显着差异?

有没有理由使用其中一个?对ImageButton的drawable有什么限制,只留下ImageView作为唯一可能的选项吗?

如果我选择点击ImageView而不是ImageButton,我是否会丢失按钮的任何功能?

3 个答案:

答案 0 :(得分:148)

除默认样式外没有任何差异。默认情况下,ImageButton的背景为非空。

编辑:此外,ImageButton.onSetAlpha()方法始终返回false,scaleType设置为center,并且它始终是可扩展的。

这是ImageButton的默认样式:

 <style name="Widget.ImageButton">
     <item name="android:focusable">true</item>
     <item name="android:clickable">true</item>
     <item name="android:scaleType">center</item>
     <item name="android:background">@android:drawable/btn_default</item>
 </style>

答案 1 :(得分:19)

ImageButton继承自ImageView

public class ImageButton extends ImageView {
public ImageButton(Context context) {
    this(context, null);
}

public ImageButton(Context context, AttributeSet attrs) {
    this(context, attrs, com.android.internal.R.attr.imageButtonStyle);
}

public ImageButton(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    setFocusable(true);
}

@Override
protected boolean onSetAlpha(int alpha) {
    return false;
}

@Override
public void onInitializeAccessibilityEvent(AccessibilityEvent event) {
    super.onInitializeAccessibilityEvent(event);
    event.setClassName(ImageButton.class.getName());
}

@Override
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
    super.onInitializeAccessibilityNodeInfo(info);
    info.setClassName(ImageButton.class.getName());
}

正如@Micheal描述的那样我只是在他的回答中添加细节

答案 2 :(得分:6)

单击时按钮单击的效果是图像按钮,但不适用于imageView。