안드로이드(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 |