2011-05-01 18 views
119

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

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

यदि मैं एक क्लिक करने योग्य ImageViewImageButton पर क्लिक करता हूं तो क्या मैं संभवतः बटन की कोई कार्यक्षमता खो दूंगा?

उत्तर

136

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

संपादित: इसके अलावा, ImageButton.onSetAlpha() विधि हमेशा गलत देता है, scaleTypecenter के लिए निर्धारित है और यह हमेशा फ़ोकस करने योग्य के रूप में फुलाया है।

यहाँ 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> 
+0

आपके उत्तर के लिए धन्यवाद। कोड के माध्यम से जाने पर मैंने मुझे देखा है उससे ज्यादा मुझे दिया। मुझे लगता है कि दिन के अंत में, 2 के बीच चयन इस बात पर निर्भर करेगा कि आप किसी भी अनुकूलन के बिना कितनी डिफ़ॉल्ट संपत्तियों का उपयोग कर सकते हैं। – yjw

+0

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

+15

वास्तव में मेरे अनुभव में दोनों के बीच एक और अंतर यह है कि यदि आप एक सूची दृश्य कक्ष में एक क्लिक करने योग्य बटन डालना चाहते हैं, तो सेल को स्वयं को क्लिक करने योग्य के रूप में बनाए रखने के दौरान आप एक छविदृश्य के साथ बहुत बेहतर हैं। टेक्स्टटेव्स और इमेजब्यूट्स टच इवेंट का उपभोग करते हैं जब टेक्स्ट व्यू और इमेज व्यू नहीं करते हैं। –

17

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 के रूप में वर्णन मैं सिर्फ

4

एक बटन के प्रभाव उसके जवाब में विवरण जोड़ने क्लिक करें जब मैं छविबटन के लिए क्लिक करता हूं लेकिन छवि दृश्य के लिए नहीं।

संबंधित मुद्दे