Разница между кликабельным ImageView и ImageButton - PullRequest
136 голосов
/ 01 мая 2011

Мне просто интересно, есть ли какая-либо существенная разница между ImageView, который настроен для кликабельности, по сравнению с ImageButton?

Есть ли причина для использования одного над другим? Есть ли какие-либо ограничения на отрисовку для ImageButton, которые оставляют ImageView в качестве единственно возможного варианта?

Могу ли я потерять какую-либо функциональность кнопки, если я выберу кликабельный ImageView более ImageButton?

Ответы [ 3 ]

149 голосов
/ 01 мая 2011

Различий нет, кроме стиля по умолчанию. 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>
20 голосов
/ 02 июля 2014

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 опишите, я просто добавлю детали к его ответу

7 голосов
/ 06 мая 2015

Эффект нажатия кнопки при нажатии присутствует для кнопки изображения, но не для imageView.

...