2016-11-23 45 views
0
import static android.text.TextUtils.join; 

import android.graphics.drawable.Drawable; 
import android.os.Bundle; 
import android.support.v4.content.ContextCompat; 
import android.support.v7.app.AppCompatActivity; 
import android.text.Spannable; 
import android.text.SpannableString; 
import android.text.style.ImageSpan; 
import android.widget.TextView; 

import java.util.ArrayList; 
import java.util.List; 

public class MainActivity extends AppCompatActivity { 

TextView testText; 
TextView testText2; 

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

    testText = (TextView) findViewById(R.id.text1); 
    testText2 = (TextView) findViewById(R.id.text2); 

    List<SpannableString> refinements = new ArrayList<>(); 
    refinements.add(getFilterWithIcon("100", R.drawable.ic_feature_bed_s)); 
    refinements.add(new SpannableString("Testing text")); 

    //Text without icon 
    testText.setText(join(" | ", refinements)); 
    //Text with icon 
    testText2.setText(getFilterWithIcon("100", R.drawable.ic_feature_bed_s)); 

} 

private SpannableString getFilterWithIcon(String stringValue, int icon) { 
    Drawable image = ContextCompat.getDrawable(getApplicationContext(), icon); 
    image.setBounds(0, 0, image.getIntrinsicWidth(), image.getIntrinsicHeight()); 
    ImageSpan imageSpan = new ImageSpan(image, ImageSpan.ALIGN_BOTTOM); 
    String spString = " " + stringValue; 
    SpannableString spFilterWithIcon = new SpannableString(spString); 
    spFilterWithIcon.setSpan(imageSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
    return spFilterWithIcon; 
}} 

Result圖片不SpannableString與圖像

當與另一個SpannableString加入所述的圖像不出現顯示。它只能用作一個SpannableString。 但是我需要加入多個SpannableStrings &沒有圖像。

感謝您的輸入。

+0

哪裏是連接方法? – chandil03

+0

@ chandil03它來自android的TextUtils。 – HasaniK

+0

嘗試使用concate方法 – chandil03

回答

2

創建SpannableStringBuilder追加多個imagespan和文字

SpannableStringBuilder builder = new SpannableStringBuilder(); 
builder.append(edittext.getText()); 
builder.append(getFilterWithIcon("100", R.drawable.ic_feature_bed_s)); 

最後定

editText.setText(builder); 

注意雖然SpannableStringBuilder是不可變的類不能被改變。

+0

這對我有效 – HasaniK