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

yjw*_*yjw 143 android imagebutton android-imageview

我只是想知道ImageView它的设置是否可点击之间是否存在任何显着差异ImageButton

是否有任何理由使用一个而不是另一个?作为唯一可能的选择ImageButton,是否有任何对drawable的限制ImageView

如果我选择点击ImageView一下,我可能会失去按钮的任何功能ImageButton吗?

Mic*_*ael 151

除默认样式外没有区别.ImageButton默认情况下具有非null背景.

编辑:此外,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>
Run Code Online (Sandbox Code Playgroud)

  • 实际上根据我的经验,两者之间的另一个区别是,如果你想将一个可点击的按钮放入ListView的单元格中,同时将单元格本身保持为可点击状态,那么使用Imageview会更好.当TextViews和ImageViews没有时,EditTexts和ImageButtons似乎消耗了触摸事件. (20认同)

Xar*_*mer 21

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());
}
Run Code Online (Sandbox Code Playgroud)

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


Pra*_*war 7

单击时单击按钮的效果是针对imagebutton但不针对imageView.