2012-09-19 11 views
9

पर छवि जोड़ें, मैं Button (imagebutton पर कोई छवि जोड़ना चाहता हूं, क्योंकि विशेष बटन में या तो टेक्स्ट या छवि हो सकती है; साथ ही छविबटन में भी वही समस्या है), जबकि मूल एंड्रॉइड-शैली को बनाए रखना बटन। इसलिए XML में android:background जोड़ना इसे काट नहीं देता है, क्योंकि यह गोलाकार कोनों आदि के साथ एंड्रॉइड डिफ़ॉल्ट बटन को हटा देगा। (android.R.drawable.btn_default)एंड्रॉइड बटन

क्या यह किसी भी तरह से संभव है?

मुझे लगता है कि एक तरह से बटन दबाया के लिए एक 9patch छवि (अप के लिए एक और नीचे के लिए एक) और onTouch Action_DOWN एक स्तरित पृष्ठभूमि drawable बनाने बनाने के लिए और बटन पर डाल दिया है, और ही बात कर रहे हैं, लेकिन एक और 9patch साथ है onTouch Action_UP के लिए, लेकिन मुझे लगता है कि एप्लिकेशन के प्रदर्शन को काफी हद तक कम कर देगा, क्योंकि इसमें सभी बटन क्लिक के लिए बहुत सारे संसाधन पढ़ने और परत विलय की आवश्यकता होगी (और मेरे आवेदन के लिए, यह काफी होगा)। क्या मैं ऊपर से ऊपर बताता हूं?

संपादित करें: मैं XML में छवि का स्रोत घोषित नहीं कर सकता, क्योंकि मुझे वेब सेवा से छवियां मिलती हैं, इसलिए बटन पर कुछ भी लगाया जा सकता है, लेकिन इसे प्रोग्रामेटिक रूप से होना पड़ता है।

+0

आप backgroundDrawable कभी भी setBackgroundDrawable (R.drawable.my_selector) के साथ आप चाहते हैं निर्धारित कर सकते हैं http://stackoverflow.com/questions/12492064/android-add-image-to-button/ 12492097 # 12492097 – weakwire

+0

तो वेब सेवा के माध्यम से मुझे मिली छवि के बारे में क्या? – stealthjong

उत्तर

21

यह आपके layout.xml में android:drawableTop, android:drawableBottom, android:drawableLeft, android:drawableRight विशेषताओं का उपयोग किया जा सकता है।

+0

एक्सएमएल का उपयोग नहीं कर सकते, संपादन देखें। – stealthjong

+1

कोड में, आप यहां वर्णित अनुसार - अजीब नामित - विधि 'setCompoundDrawablesWithIntrinsicBounds (int, int, int, int)' का उपयोग कर सकते हैं: http://developer.android.com/reference/android/widget/TextView.html#setCompoundDrawablesWithIntrinsicBounds (int, int, int, int) <- लिंक एसओ द्वारा सही ढंग से लिंक नहीं किया गया है ... – Ridcully

+0

बस पढ़ें कि आपको एक webservice से छवियां मिलती हैं, इसलिए आप इस विधि का बेहतर उपयोग करते हैं: 'setCompoundDrawablesWithIntrinsicBounds (Drawable left, Drawable top , ड्राइटेबल सही, ड्राइटेबल नीचे) '। आप 'ड्रायबल' का उपयोग कर ड्रायबल्स बना सकते हैं।createFromStream (इनपुटस्ट्रीम है) '। – Ridcully

0

आप कई राज्यों के साथ अपने स्वयं drawable बना सकते हैं और पृष्ठभूमि करने के लिए सेट है कि

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_enabled="false" 
     android:drawable="@drawable/selected" /> 
    <item android:drawable="@drawable/normal" /> 
</selector> 

ड्रॉएबल गोल हो सकता है कोनों इसलिए की तरह कर सकते हैं।

<corners android:topLeftRadius="5dp" android:topRightRadius="5dp" 
     android:bottomLeftRadius="0.2dp" android:bottomRightRadius="0.2dp"/> 
8

टेक्स्ट के साथ डिस्प्ले छवि के लिए बटन की संपत्ति के नीचे सेट करें, इस प्रॉपर्टी छवि का उपयोग कर पाठ को ऊपर प्रदर्शित कर रहा है।

<Button android:drawableTop="@drawable/ic_launcher"/> 
2

की स्थापना छवि:

btn.setBackgroundResource(R.drawable.ic_launcher); 

की स्थापना पाठ के लिए:

btn.setText("My Button"); 

कोड:

private Drawable buttonDrawable; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    final Button btn=(Button) findViewById(R.id.button1); 
    buttonDrawable=btn.getBackground(); 
    //Setting the image. 
    btn.setBackgroundResource(R.drawable.ic_launcher); 
    btn.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      /*Removing image and setting text*/ 
      btn.setBackgroundDrawable(buttonDrawable); 
      btn.setText("My Button"); 
     } 
    }); 
} 
+1

काम नहीं करेगा, क्योंकि मैं एंड्रॉइड स्टाइल बटन को बनाए रखना चाहता हूं। जब मैं पृष्ठभूमि सेट करता हूं, एंड्रॉइड मूल चला जाता है और संभावित स्क्वायर बटन के लिए प्रतिस्थापित किया जाता है। मैं मूल बटन लेआउट की बजाय बटन पर/बटन चाहता हूं – stealthjong

8

enter image description here

 <Button 
      android:layout_width="0dp" 
      android:layout_weight="1" 
      android:background="@drawable/home_button" 
      android:drawableLeft="@android:drawable/ic_menu_edit" 
      android:drawablePadding="6dp" 
      android:gravity="left|center" 
      android:height="60dp" 
      android:padding="6dp" 
      android:text="AndroidDhina" 
      android:textColor="#000" 
      android:textStyle="bold" /> 
अधिक जानकारी के लिए

http://androiddhina.blogspot.in/2015/09/how-to-add-image-inside-button.html

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