안드로이드(Android) 다이얼로그 Dialog 텍스트 링크 거는 방법

안드로이드 개발

안드로이드(Android) 다이얼로그 Dialog 텍스트 링크 거는 방법

 

환경: Microsoft Access 2013

 

안드로이드에서 TextView 뿐만 아니라 다이얼로그에도 다른 웹 페이지로 이동할 수 있도록 링크를 달 수가 있습니다. 일반적으로 URL 링크를 거는 방법과 동일하며 링크가 걸린 텍스트를 다이얼로그 메시지로 보내서 만드는 것입니다.

 

먼저 링크를 만들기 위해서 SpannableString 객체를 생성해야 합니다. 만들 때 생성자로 URL 을 넣습니다. 그리고 Linkify.addLinks() 함수를 이용해 SpannableString 내에 있던 URL 텍스트를 링크가 가능하도록 만듭니다.

final SpannableString site = new SpannableString(
		"http://mainia.tistory.com/");

Linkify.addLinks(site, Linkify.ALL);


다음은 다이얼로그를 생성합니다. 다이얼로그를 생성할 때 setMessage() 함수에 URL 링크를 클릭 가능하도록 만든 SpannableString 객체를 인수로 넘깁니다. 그럼 다이얼로그에 하이퍼링크가 걸린 텍스트가 나타나게 되겠죠

final AlertDialog dialog = new AlertDialog.Builder(
		DialogLinkActivity.this)
		.setMessage(site)
		.setPositiveButton("OK",
				new DialogInterface.OnClickListener() {
					public void onClick(
						DialogInterface dialog, int which) {
					}
				}).create();

dialog.show();


마지막으로 다이얼로그의 링크 글을 클릭했을 때 이동할 수 있도록 다이얼로그에서 메시지 객체인 TextView 를 찾습니다. 그러니까 “http://mainia.tistory.com/” 담긴 TextView 객체를 리턴 하는 것이죠. 여기에 setMovementMethod() 함수를 사용하면 http:// 가 있는 Text 를 이동이 가능한 링크로 만들 수 있습니다.  

((TextView) dialog.findViewById(android.R.id.message))
		.setMovementMethod(LinkMovementMethod.getInstance());


아래는 다이얼로그에 링크가 걸린 텍스트를 표현한 전체 소스 입니다

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.method.LinkMovementMethod;
import android.text.util.Linkify;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

import com.example.sampleandroidinfo.R;

public class DialogLinkActivity extends Activity implements
		OnClickListener {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_dialog_link);
		
		Button btn = (Button)findViewById(R.id.btnDialog);
		btn.setOnClickListener(this);
	}

	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.btnDialog:
			this.openSiteDialog();
			break;
		default:
			break;
		}
	}

	private void openSiteDialog() {

		final SpannableString site = new SpannableString(
				"http://mainia.tistory.com/");
		
		Linkify.addLinks(site, Linkify.ALL);

		final AlertDialog dialog = new AlertDialog.Builder(
				DialogLinkActivity.this)
				.setMessage(site)
				.setPositiveButton("OK",
						new DialogInterface.OnClickListener() {
							public void onClick(
								DialogInterface dialog, int which) {
							}
						}).create();

		dialog.show();

		((TextView) dialog.findViewById(android.R.id.message))
				.setMovementMethod(LinkMovementMethod.getInstance());
	}
}


아래는 메인 activity 에 들어가는 레이아웃 xml 입니다

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
	
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#3F0099"
        android:gravity="center"
        android:paddingBottom="@dimen/abc_action_bar_icon_vertical_padding"
        android:paddingTop="@dimen/abc_action_bar_icon_vertical_padding"
        android:text="다이얼로그 URL 링크"
        android:textColor="#FFFFFF" />

    <Button
            android:id="@+id/btnDialog"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="다이얼로그 띄우기" />

</LinearLayout>

안드로이드(Android) 다이얼로그 Dialog 텍스트 링크 거는 방법



저작자 표시 비영리 변경 금지
신고
Posted by 녹두장군