안드로이드 자바

[Java][Android] SpannableString 와 ImageSpan으로 TextView에 아이콘 넣기

teamnova 2025. 4. 20. 17:47
728x90

안녕하세요, 

 

오늘은 SpannableString 와 ImageSpan을 사용하여 텍스트에 아이콘(이미지)를 삽입하는 예제를 만들어보겠습니다. 

 

 

MainActivity.java

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView textView = findViewById(R.id.textView);

        // 1. 텍스트 준비 (앞에 공백 포함)
        SpannableString spannable = new SpannableString("  경고 메시지입니다.");

        // 2. 사용할 이미지 가져오기
        Drawable drawable = ContextCompat.getDrawable(this, R.drawable.warning_24px); // 아이콘 파일 필요
        if (drawable != null) {
            drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());

            // 3. 이미지 span 생성 및 적용
            ImageSpan imageSpan = new ImageSpan(drawable, ImageSpan.ALIGN_BOTTOM);
            spannable.setSpan(imageSpan, 0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
        }

        // 4. TextView에 적용
        textView.setText(spannable);
    }
}

 

 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:padding="24dp">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="18sp"/>
</LinearLayout>

 

 

아이콘은 아래 사이트에서 다운로드 가능합니다. 

 

https://fonts.google.com/icons

 

Material Symbols and Icons - Google Fonts

Material Symbols are our newest icons consolidating over 2,500 glyphs in a single font file with a wide range of design variants.

fonts.google.com

 

 

시연 화면입니다.