728x90
반응형
- autoLink
- textview를 하이퍼 링크처럼 보이게 + onClickListener
1. autoLink
TextView의 텍스트를 클릭하면 웹브라우저가 열리도록 할 수 있습니다.
onClickListner를 달아 세부적인 기능 추가를 할 수도 있으나
간단하게 열릴 수 있도록 하는 옵션은 하단의 autoLink 옵션을 달아주는것으로 충분합니다.
android:autoLink="web"
사용방법은 아래와 같습니다.
<TextView
android:id="@+id/text_urls"
android:textColor="@color/color_text_black"
android:autoLink="web"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
/>
이외에도 다양한 옵션 부여가 가능합니다.
안드로이드 개발자문서에 따르면 아래와 같습니다.
*all로 해두면 자동으로 판단하여 해당 종류에 해당하는 앱을 실행하여 줍니다.
all | Match all patterns (equivalent to web|email|phone|map). |
Match email addresses. | |
map | Match map addresses. Deprecated: see Linkify.MAP_ADDRESSES. |
none | Match no patterns (default). |
phone | Match phone numbers. |
web | Match Web URLs. |
2. textview를 하이퍼 링크처럼 보이게 + onClickListener
하지만 텍스트뷰를 클릭했을 때 좀 더 복잡한 작업을 수행하기를 원한다면 다른방법을 사용해야 합니다. 이때는 아래와 같이 직접 만들어 줍니다.
하단의 코드는 텍스트뷰에 onClickListener를 달아줍니다. 저는 텍스트의 url을 Fragment에 넘겨 이를 실행하는데 사용하했습니다.
public void textviewLinkable() {
makeTextViewHyperlink(mTextView);
mTextView.setOnClickListener(
v -> {
String url = mTextView.getText().toString();
replaceFragment(FragmentSomething.newInstance(url));
}
);
}
하단의 코드는 텍스트뷰를 HyperLink처럼 보이도록 꾸며주는 코드입니다.
public static void makeTextViewHyperlink(TextView tv) {
SpannableStringBuilder ssb = new SpannableStringBuilder();
ssb.append(tv.getText());
ssb.setSpan(new URLSpan("#"), 0, ssb.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.setText(ssb, TextView.BufferType.SPANNABLE);
}
onCreate나 onCreateView 같은곳에 아래와 같이 사용하면 됩니다.
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView mTextView = findViewById(R.id.textview);
textviewLinkable(mTextView)
}
public void textviewLinkable(TextView textView) {
makeTextViewHyperlink(textView);
textView.setOnClickListener(
v -> {
String url = textView.getText().toString();
replaceFragment(FragmentSomething.newInstance(url));
}
);
}
public static void makeTextViewHyperlink(TextView tv) {
SpannableStringBuilder ssb = new SpannableStringBuilder();
ssb.append(tv.getText());
ssb.setSpan(new URLSpan("#"), 0, ssb.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.setText(ssb, TextView.BufferType.SPANNABLE);
}
728x90
반응형
'Android > Dev' 카테고리의 다른 글
Layout의 위치를 xml이 아닌 Code를 통해 조절하기 (0) | 2020.04.01 |
---|---|
AsyncTask, Coroutine, RxJava를 이용한 비동기의 구현 (0) | 2020.03.12 |
리다이렉트되는 페이지를 Jsoup로 파싱하기 (0) | 2020.03.10 |
windowSoftInputMode : 키보드 입력 시의 화면조절 옵션 (0) | 2020.02.11 |
TabLayout이 태블릿에서 작게 나타날때 (0) | 2020.02.01 |
댓글