빠른 제작 TextView 링크 및 이벤트 지정 클릭
8314 단어 Android
개시하다
규약이나 프라이버시 정책 등을 사용해 글의 일부를 브라우저에 링크하려는 경우 사용한 노트를 복사할 수 있다.Spannable String을 사용하면 상당히 번거롭기 때문에 총괄할 수 있습니다.
정규 표현식을 사용하여 링크할 텍스트를 지정하고 여러 링크를 동시에 연결합니다.onClick의 내용을 변경하면 브라우저 이외의 동작을 건너뛰는 데도 사용할 수 있습니다.
코드
SampleFragment.java
private void setSpannableString(View view) {
String message = "利用規約、プライバシーポリシーに同意する。";
// リンク化対象の文字列、リンク先 URL を指定する
Map<String, String> map = new HashMap<String, String>();
map.put("利用規約", "http://hogehoge.com/rules");
map.put("プライバシーポリシー", "http://hogehoge.com/policies");
// SpannableString の取得
SpannableString ss = createSpannableString(message, map);
// SpannableString をセットし、リンクを有効化する
TextView textView = (TextView) view.findViewById(R.id.text);
textView.setText(ss);
textView.setMovementMethod(LinkMovementMethod.getInstance());
}
private SpannableString createSpannableString(String message, Map<String, String> map) {
SpannableString ss = new SpannableString(message);
for (final Map.Entry<String, String> entry : map.entrySet()) {
int start = 0;
int end = 0;
// リンク化対象の文字列の start, end を算出する
Pattern pattern = Pattern.compile(entry.getKey());
Matcher matcher = pattern.matcher(message);
while (matcher.find()) {
start = matcher.start();
end = matcher.end();
break;
}
// SpannableString にクリックイベント、パラメータをセットする
ss.setSpan(new ClickableSpan() {
@Override
public void onClick(View textView) {
String url = entry.getValue();
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
}, start, end, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
}
return ss;
}
참고 자료
http://developer.android.com/reference/android/text/SpannableString.html
http://developer.android.com/reference/android/text/Spanned.html
Reference
이 문제에 관하여(빠른 제작 TextView 링크 및 이벤트 지정 클릭), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/suzukihr/items/19a2ec4b9a163b151164텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)