1. 메인 화면 레이아웃 및 네비게이션
안드로이드 앱 개발 시 사용자 인터페이스(UI)를 구성하는 기본 컴포넌트로 TextView와 EditText가 자주 사용됩니다. 먼저, 데모 화면으로 이동하기 위한 진입점 레이아웃과 액티비티를 구성합니다.
레이아웃 파일 (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 입력 제어
TextView의 autoLink 속성을 사용하면 텍스트 내의 전화번호나 웹 주소를 자동으로 감지하여 클릭 시 관련 앱(전화, 브라우저)을 실행할 수 있습니다. EditText의 inputType과 maxLines 속성은 키보드 유형을 변경하고 입력 형식을 제한하는 데 사용됩니다.
레이아웃 파일 (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);
}
}