एक क्लिक करने योग्य छवि दृश्य और इमेजबटन के बीच अंतर


149

मैं सोच रहा हूँ कि अगर किसी के ImageViewसाथ तुलना करने के लिए क्लिक करने योग्य सेट के बीच कोई महत्वपूर्ण अंतर है ImageButton?

क्या एक के ऊपर एक प्रयोग करने का कोई कारण है? क्या केवल संभावित विकल्प के रूप में ImageButtonउस पत्ते के लिए ड्रॉबल पर कोई प्रतिबंध है ImageView?

मैं संभवतः एक बटन के किसी भी कार्यक्षमता खो देंगे अगर मैं एक क्लिक करने योग्य के लिए चुनते ImageViewके ऊपर ImageButton?

जवाबों:


158

डिफ़ॉल्ट शैली को छोड़कर कोई मतभेद नहीं है। ImageButtonडिफ़ॉल्ट रूप से एक गैर-अशक्त पृष्ठभूमि है।

संपादित करें : इसके अलावा, ImageButton.onSetAlpha()विधि हमेशा झूठी होती है, 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
आपके उत्तर के लिए धन्यवाद। आपने मुझे कोड से गुजरते समय स्पॉट किए जाने से अधिक दिया। मुझे लगता है कि दिन का अंत, 2 के बीच का चयन इस बात पर निर्भर करेगा कि आप बिना किसी अनुकूलन के कितने डिफ़ॉल्ट गुणों का उपयोग कर सकते हैं।
yjw

आपका स्वागत है! हां, वास्तव में बहुत अंतर नहीं है, इसलिए पसंद बटन और बटन के बीच है, मुझे लगता है।
माइकल

20
वास्तव में मेरे अनुभव में दोनों के बीच एक और अंतर यह है कि यदि आप एक क्लिक करने योग्य बटन को एक सूची दृश्य सेल में रखना चाहते हैं, जबकि सेल को स्वयं क्लिक करने योग्य बनाए रखना है तो आप इमेजव्यू से बहुत बेहतर हैं। जब TextViews और ImageViews नहीं करते हैं तो EditTexts और ImageButtons टच इवेंट का उपभोग करते हैं।
एर्निर एर्लिंगसन

मैंने क्लिक करने योग्य ImageView का उपयोग किया था, लेकिन नई आवश्यकता के अनुसार मुझे उन्हें ImageButton में बदलना होगा, लेकिन उपयोग की जाने वाली छवि Inflated हो जाती है। मैं इमेजबटन में छवि मुद्रास्फीति से कैसे बच सकता हूं?
कोडराइडर

@codeRider मुझे यकीन नहीं है कि मैं समझता हूं कि आपका क्या मतलब है। यदि यह स्थिति अलग है तो यह स्पष्ट रूप से ImageViewआपके द्वारा निर्दिष्ट और निर्दिष्ट किए गए कार्यों से भिन्न है scaleType
माइकल

24

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 वर्णन करता हूं मैं सिर्फ उनके उत्तर में विवरण जोड़ता हूं


यह ओपी में विभिन्न सवालों के जवाब कैसे देता है?
दोषपूर्ण

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.