Tıklanabilir ImageView ve ImageButton arasındaki fark


149

Sadece bir ImageViewtıklanabilir olmak için ayarlanmış bir arasında herhangi bir önemli bir fark olup olmadığını merak ediyorum ImageButton?

Birini diğerinin üzerinde kullanmak için herhangi bir neden var mı? Bir için çekilebilir üzerinde herhangi bir kısıtlama var mıdır ImageButtono yaprakları ImageViewtek olası seçenek olarak?

Ben tıklanabilir tercih eğer muhtemelen bir düğmeye herhangi bir işlevi kaybedecek ImageViewover ImageButton?

Yanıtlar:


158

Varsayılan stil dışında hiçbir fark yoktur. ImageButtonvarsayılan olarak boş olmayan bir arka plana sahiptir.

EDIT : Ayrıca, ImageButton.onSetAlpha()yöntem her zaman false döndürür, scaleTypeolarak ayarlanır centerve her zaman odaklanabilir olarak şişirilir.

İşte ImageButtonvarsayılan stili:

 <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
Cevabınız için teşekkürler. Kodun kendisinden geçerken bana fark ettiğimden daha fazlasını verdin. Günün sonunda, 2 arasındaki seçim, herhangi bir özelleştirme olmadan kullanabileceğiniz varsayılan özelliklerin ne kadarına bağlı olacaktır.
yjw

Rica ederim! Evet, çok fazla fark yok, bu yüzden seçim düğme ile düğme değil, sanırım.
Michael

20
Aslında deneyimlerime göre ikisi arasında bir başka fark, bir ListView´s hücresine tıklanabilir bir düğme koymak istiyorsanız, hücrenin kendisini tıklanabilir olarak koruduğunuzda bir Imageview ile çok daha iyi durumda olmanızdır. EditTexts ve ImageButtons, TextViews ve ImageViews yapmadığında touch olayını tüketiyor gibi görünüyor.
Ernir Erlingsson

Tıklanabilir ImageView kullanmıştım ama yeni gereksinime göre bunları ImageButton olarak değiştirmek zorundayım ama kullanılan görüntü Şişirilmiş oluyor. ImageButton'daki görüntü şişirmesini nasıl önleyebilirim?
codeRider

@codeRider Ne demek istediğini anladığımdan emin değilim. Konumlandırma, içinde olduğundan farklı ImageViewolabilir ve scaleTypeaçıkça belirtebilirsiniz .
Michael

24

ImageButton, ImageView'den devralınır

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 tarif ettiği gibi sadece cevabına ayrıntılar ekliyorum


Bu OP'deki çeşitli sorulara nasıl cevap veriyor?
flawyte

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.