안드로이드 TextView 자동 링크 및 EditText 입력 타입 설정 방법

1. 메인 화면 레이아웃 및 네비게이션

안드로이드 앱 개발 시 사용자 인터페이스(UI)를 구성하는 기본 컴포넌트로 TextViewEditText가 자주 사용됩니다. 먼저, 데모 화면으로 이동하기 위한 진입점 레이아웃과 액티비티를 구성합니다.

레이아웃 파일 (layout_main.xml)

단순히 화면 전환을 트리거하는 버튼 하나를 포함하는 레이아웃입니다.

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

    <Button
        android:id="@+id/btn_open_input_demo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="navigateToInputDemo"
        android:text="입력 및 링크 데모 열기" />
</LinearLayout>

액티비티 클래스 (MainEntryActivity.java)

버튼 클릭 이벤트를 처리하여 타겟 액티비티로 이동하는 로직을 작성합니다.

package com.example.uidemo;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class MainEntryActivity extends Activity {

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

    public void navigateToInputDemo(View view) {
        Intent intent = new Intent(this, InputDemoActivity.class);
        startActivity(intent);
    }
}

2. 리소스 문자열 정의

레이아웃에서 참조할 전화번호 등의 문자열 리소스를 res/values/strings.xml에 정의합니다.

<resources>
    <string name="app_name">UI_Component_Demo</string>
    <string name="sample_phone_number">010-1234-5678</string>
    
    <string-array name="sample_roles">
        <item>디벨로퍼</item>
        <item>디자이너</item>
        <item>매니저</item>
    </string-array>
</resources>

3. TextView 자동 링크 및 EditText 입력 제어

TextViewautoLink 속성을 사용하면 텍스트 내의 전화번호나 웹 주소를 자동으로 감지하여 클릭 시 관련 앱(전화, 브라우저)을 실행할 수 있습니다. EditTextinputTypemaxLines 속성은 키보드 유형을 변경하고 입력 형식을 제한하는 데 사용됩니다.

레이아웃 파일 (layout_input_demo.xml)

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

    <!-- 전화번호 자동 링크 -->
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:autoLink="phone"
        android:gravity="center"
        android:padding="10dp"
        android:text="@string/sample_phone_number"
        android:textSize="24sp" />

    <!-- 웹 주소 자동 링크 -->
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:autoLink="web"
        android:gravity="center"
        android:padding="10dp"
        android:text="https://developer.android.com"
        android:textSize="24sp" />

    <!-- 전화번호 입력 (숫자 키보드, 단일 라인) -->
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:hint="연락처 입력"
        android:inputType="phone"
        android:maxLines="1" />

    <!-- 일반 텍스트 입력 (단일 라인) -->
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:hint="이름 입력"
        android:inputType="text"
        android:maxLines="1" />

    <!-- 비밀번호 입력 (마스킹 처리, 단일 라인) -->
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:hint="비밀번호 입력"
        android:inputType="textPassword"
        android:maxLines="1" />

</LinearLayout>

핵심 속성 상세 설명

  • android:autoLink="phone": 텍스트가 전화번호 형식일 경우 자동으로 클릭 가능한 링크로 변환합니다.
  • android:autoLink="web": URL 형식의 텍스트를 웹 브라우저로 연결되는 링크로 만듭니다.
  • android:maxLines="1": EditText의 입력 줄 수를 1줄로 제한하여 줄바꿈을 방지합니다.
  • android:inputType="phone": 숫자 및 전화 관련 기호만 입력할 수 있도록 키패드를 최적화합니다.
  • android:inputType="text": 일반적인 텍스트 입력을 위한 기본 키패드를 표시합니다.
  • android:inputType="textPassword": 입력되는 문자를 점이나 별표로 마스킹하여 비밀번호 입력에 적합하게 만듭니다.

4. 데모 액티비티 구현

마지막으로 위에서 정의한 레이아웃을 화면에 표시하는 액티비티를 작성합니다.

액티비티 클래스 (InputDemoActivity.java)

package com.example.uidemo;

import android.app.Activity;
import android.os.Bundle;

public class InputDemoActivity extends Activity {

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

태그: Android TextView EditText UI AutoLink

6월 21일 23:16에 게시됨