안드로이드(Android) 앱을 개발하다 보면 링크나 강조 문구 등 특정 텍스트에 밑줄을 넣어야 하는 경우가 종종 있습니다. 이 글에서는 안드로이드 레이아웃 XML과 자바 코드를 활용해 밑줄이 그어진 텍스트를 정의하는 방법을 단계별로 살펴보겠습니다.
1단계: 새 프로젝트 생성
Android Studio에서 File → New Project 메뉴로 이동하여 새 프로젝트를 생성하고, 필요한 기본 정보를 모두 입력해 프로젝트를 완성합니다.
2단계: 레이아웃 파일 작성
res/layout/activity_main.xml 파일에 아래 코드를 추가합니다.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center"
android:padding="16dp"
android:text="Content"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Large" />
</RelativeLayout>
3단계: MainActivity 작성
src/MainActivity.java 파일에 다음 코드를 추가합니다. 핵심은 SpannableString과 UnderlineSpan을 사용하는 부분입니다.
package app.tutorialspoint.com.sample;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.SpannableString;
import android.text.style.UnderlineSpan;
import android.widget.TextView;
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);
SpannableString content = new SpannableString("Content");
content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
textView.setText(content);
}
}
코드 설명
SpannableString은 문자열 전체 또는 일부에 밑줄, 굵게, 색상 변경 같은 스타일을 적용할 수 있게 해주는 클래스입니다. setSpan() 메서드에 UnderlineSpan 객체를 전달하면 지정한 범위(여기서는 0부터 문자열 끝까지)의 텍스트에 밑줄이 적용됩니다.
4단계: AndroidManifest.xml 설정
androidManifest.xml 파일에 아래 코드를 추가합니다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="app.tutorialspoint.com.sample">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
앱 실행 및 결과 확인
실제 안드로이드 기기를 컴퓨터에 연결한 상태에서 앱을 실행해 보겠습니다. Android Studio 툴바에서 Run 아이콘을 클릭한 뒤, 목록에서 연결된 모바일 기기를 선택합니다. 앱이 실행되면 화면 중앙에 밑줄이 그어진 'Content' 텍스트가 표시되는 것을 확인할 수 있습니다.

참고: XML만으로 밑줄 텍스트 정의하기
자바 코드 없이 순수하게 XML만으로 밑줄을 적용하고 싶다면 strings.xml에서 HTML 태그를 활용하는 방법도 있습니다.
<resources>
<string name="underlined_text"><u>Content</u></string>
</resources>
이렇게 정의한 문자열 리소스를 레이아웃 XML의 TextView에 그대로 연결하면 별도의 자바 코드 없이도 밑줄이 표시됩니다.
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/underlined_text" />