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

问题描述 投票:0回答:4

我只是想知道设置为可点击的

ImageView
ImageButton
相比是否有任何显着差异?

有什么理由使用其中一种而不是另一种吗?

ImageButton
的可绘制对象是否有任何限制,使得
ImageView
成为唯一可能的选项?

如果我选择可点击的

ImageView
而不是
ImageButton
,我是否可能会失去按钮的任何功能?

android android-imageview imagebutton
4个回答
168
投票

除了默认样式外,没有任何区别。

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>

26
投票

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 所描述的,我只是在他的答案中添加了详细信息


8
投票

单击按钮时的效果对于 imagebutton 有,但对于 imageView 没有。


0
投票

如果你愿意,你可以给按钮点击效果作为背景。 ImageButton默认有效果。

© www.soinside.com 2019 - 2024. All rights reserved.