2011-08-03 16 views
205

में प्रोग्राम करने योग्य सेट को सेट करें मेरे पास xml में टेक्स्ट व्यू है।प्रोग्रामेटिक रूप से एक टेक्स्ट व्यू

<TextView 
     android:id="@+id/bookTitle" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:drawableLeft="@drawable/checkmark" 
     android:gravity="center_vertical" 
     android:textStyle="bold" 
     android:textSize="24dip" 
     android:maxLines="1" 
     android:ellipsize="end"/> 

जैसा कि आप देख सकते हैं कि मैंने DrawableLeft को xml में सेट किया है।

मैं कोड में खींचने योग्य को बदलना चाहता हूं।

क्या ऐसा करने के लिए वैसे भी जाना है? या पाठ दृश्य के लिए कोड में drawableLeft सेटिंग?

उत्तर

584

आप setCompoundDrawablesWithIntrinsicBounds(int left, int top, int right, int bottom)

सेट 0 उपयोग कर सकते हैं, जहां आप नहीं छवियों

उदाहरण Drawable के लिए बाईं तरफ के हैं:

TextView textView = (TextView) findViewById(R.id.myTxtView); 
textView.setCompoundDrawablesWithIntrinsicBounds(R.drawable.icon, 0, 0, 0); 

टिप: जब भी आप किसी भी XML विशेषता पता लेकिन रनटाइम पर इसका उपयोग कैसे करें इसके बारे में कोई जानकारी नहीं है। बस डेवलपर दस्तावेज़ में उस संपत्ति के विवरण पर जाएं। वहां आपको संबंधित तरीके मिलेगा यदि यह रनटाइम पर समर्थित है। यानी For DrawableLeft

+0

तो मैं इस विधि में कहां खींचने योग्य सेट करूँ? –

+1

+1 यह एंड्रॉइड सेटिंग के लिए काम कर रहा है: प्रोग्रामव्यू के लिए DrawableLeft प्रोग्रामेटिक रूप से। टिप जोड़ने के लिए Thanx साथी –

+23

+1। टिप के लिए दस्तावेज़ – gmjordan

3

आप निम्न विधियों में से किसी भी TextView पर Drawable स्थापित करने के लिए उपयोग कर सकते हैं:

1- setCompoundDrawablesWithIntrinsicBounds(int, int, int, int)

2- setCompoundDrawables(Left_Drawable, Top_Drawable, Right_Drawable, Bottom_Drawable)

और संसाधनों से drawable आप उपयोग कर सकते हैं पाने के लिए:

getResources().getDrawable(R.drawable.your_drawable_id); 
+0

नहीं, setCompoundDrawablesWithIntrinsicBounds (int, int, int, int) आपके स्वयं के लिंक से API Levet 3 है ... – BrainCrash

+0

ओह क्षमा करें! मैंने अपना उत्तर –

-7
static private Drawable **scaleDrawable**(Drawable drawable, int width, int height) { 

    int wi = drawable.getIntrinsicWidth(); 
    int hi = drawable.getIntrinsicHeight(); 
    int dimDiff = Math.abs(wi - width) - Math.abs(hi - height); 
    float scale = (dimDiff > 0) ? width/(float)wi : height/
      (float)hi; 
    Rect bounds = new Rect(0, 0, (int)(scale * wi), (int)(scale * hi)); 
    drawable.setBounds(bounds); 
    return drawable; 
} 
+0

अपडेट किया है यह प्रश्न का उत्तर नहीं देता है। TextView संबंधित उत्तर की उम्मीद है। – Rick

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