2011-04-06 21 views
53

मैं टेक्स्टव्यू में कुछ छवियों को इन्सेट करना चाहता हूं। यह कैसे करना है? कोई विचारएंड्रॉइड के टेक्स्ट व्यू में छवि कैसे प्रदर्शित करें?

+0

पहले दो जवाब का उपयोग कर, आप केवल शीर्ष, नीचे पाठ के बीच छवियों को जोड़ने के लिए, बाएं या दाएं, में सक्षम नहीं हैं, लेकिन मेरे समाधान आप क्या सूचकांक आप पाठ –

+2

देखें में चाहते हैं पर चित्र को जोड़ने के लिए अनुमति देता इस आलेख को कैसे [टेक्स्टव्यू में कंपाउंड ड्रॉबल्स सेट करें] (http://mgmblog.com/2010/06/04/setcompounddrawable-to-add-drawables-to-textview/) – Salil

+0

'दाविद' द्वारा अपडेट किया गया उत्तर कॉम्पैक्ट। – Darpan

उत्तर

67

आप एक स्पैन करने योग्य स्ट्रिंग बना सकते हैं और अपनी छवि को टेक्स्टव्यू में रखना चाहते हैं। या आप उपयोग कर सकते हैं

ImageSpan is = new ImageSpan(context, resId); 
text.setSpan(is, index, index + strLength, 0); 
+0

यह सीमाओं के अपवाद से बाहर सूचकांक पर समाप्त नहीं होगा क्योंकि तीसरा पैरामीटर, जो अंतराल है, स्ट्रिंग की लंबाई से परे है? –

+4

@LeiLeyba सही। असली जवाब होगा: अंतिम स्पैन करने योग्य टेक्स्ट = नया स्पैन करने योग्य स्ट्रिंग (स्ट्रिंग + ""); text.setSpan (है, string.length(), 1 + string.length(), 0); । यह दिए गए स्ट्रिंग के अंत में एक छवि जोड़ देगा। –

+0

यदि आप पाठ के साथ लिपटे एक छवि को रखना चाहते हैं, तो ध्यान रखें कि यदि आप "स्पेस" फैलाते हैं तो यह प्रदर्शित नहीं होता है- ट्रैक्टर और टेक्स्टव्यू उस स्थिति में एक लाइनब्रेक डालता है। मुझे लगता है कि टेक्स्टव्यू इस मामले में सभी रिक्त स्थानों को काटता है, जो छवि को उस स्थिति में प्रदर्शित नहीं होने वाली छवि को जन्म देता है। "एक्स" जैसे डमी चरित्र का उपयोग करें जो इसके बजाय टेक्स्टव्यू द्वारा कट नहीं किया जाता है। – Kedu

9

ऐसा कुछ करें।

textView.setCompoundDrawableWithIntrinsicBounds(yourImg, null, null, null); 
23
ImageSpan is = new ImageSpan(context, R.drawable.arrow); 
SpannableString text = new SpannableString("Lorem ipsum dolor sit amet"); 
text.setSpan(is, 5, 5 + 10, 0); 
+0

यह सबसे साफ समाधान है (और केवल एक जो मेरे लिए काम करता है) । – Bevor

1

मेकअप custom.xml

 <RelativeLayout 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"> 
      <ImageView 
       android:id="@+id/thumbnail_view" 
       android:src="@drawable/ic_launcher" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" /> 

    <TextView android:id="@+id/message_view" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_toRightOf="@id/thumbnail_view" 
       android:textSize="18sp" 
       android:text="MyText" /> 
     </RelativeLayout> 

तो main.xml में, इस custom.xml शामिल

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:orientation="vertical" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:gravity="center_horizontal"> 

    <include 
     android:id="@+id/customView" 
     layout="@layout/custom"/> 

      </LinearLayout> 

यह मेरा mainActivity.class

है
package com.example.test; 


import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.ImageView; 
    import android.widget.TextView; 


    public class MainActivity extends Activity implements OnClickListener { 

    private String TAG = MainActivity.class.getSimpleName(); 
    ImageView img; 
    ImageView img1; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    TextView txt = (TextView)findViewById(R.id.message_view); 
    img = (ImageView) findViewById(R.id.thumbnail_view); 
    img1 = (ImageView) findViewById(R.id.thumbnail_view1); 

    img.setOnClickListener(this); 
    img1.setOnClickListener(this); 

} 
@Override 
public void onClick(View v) { 
    if(v== img){ 
     // do something for img 
    } 
    else if (v== img1){ 
     //do something for img1 
    } 

} 
} 
50

बहुत आसान आप एपीआई से SpannableStringBuilder उपयोग कर सकते हैं 1

उदाहरण उपयोग: एपीआई> = 1

SpannableStringBuilder builder = new SpannableStringBuilder(); 
    builder.append("My string. I ").append(" "); 
    builder.setSpan(new ImageSpan(getActivity(), R.drawable.ic_action_heart), 
      builder.length() - 1, builder.length(), 0); 
    builder.append(" Cree by Dexode"); 

    textView.setText(builder); 
+1

बहुत अच्छा समाधान! धन्यवाद ! –

+0

बिल्कुल सही। धन्यवाद! – Umair

+0

अरे, क्या किसी भी तरह से टेक्स्टव्यू के भीतर एक संपादन जोड़ने के लिए संभव है क्योंकि हमने ऊपर की तरह टेक्स्टव्यू के भीतर छवि जोड़ा है? – Anu

-1

लिए

एपीआई> = 21

SpannableStringBuilder builder = new SpannableStringBuilder(); 
    builder.append("My string. I ") 
      .append(" ", new ImageSpan(getActivity(), R.drawable.ic_action_heart), 0) 
      .append(" Cree by Dexode"); 

    textView.setText(builder); 

के लिए इसको आजमाओ..!!

<string name="home"><img src=""></img></string> 

<TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/home" /> 
+0

सभी – prateek31

+0

पर काम नहीं करता है यह वास्तव में काम करने का अनुमान लगाता है? –

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