안드로이드(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>
'안드로이드 개발' 카테고리의 다른 글
| 안드로이드 개발 FragmentActivity 사용해서 화면 구성하는 방법 (0) | 2019.09.03 |
|---|---|
| 안드로이드 개발 에뮬레이터 타임아웃(Timeout) 오류 해결하는 방법 (0) | 2019.08.26 |
| 안드로이드 Android 디자인 참고 아이콘 Material design icon 다운받아 사용하기 (0) | 2019.08.05 |
| 안드로이드(Android) 삼성 갤럭시 에뮬레이터 테스트 다운받아 이용하기 (0) | 2019.06.06 |
| 안드로이드 개발 로그인 화면 간단하게 만드는 방법 (0) | 2019.03.23 |
| 안드로이드(Android) 리스트뷰(ListView) Header, Footer 레이아웃 추가하는 방법 (0) | 2019.01.31 |
| 안드로이드 개발 비정상 종료시 에러 남기는 방법 (0) | 2019.01.20 |
| 개발자들을 위한 공유 API 스토어 사이트 (0) | 2019.01.20 |
