作者:筱冬瀦 | 来源:互联网 | 2023-05-20 14:24
我想添加多个链接以类似于谷歌与Flipboard的下面已经与他们做一个TextView 条款和条件及隐私政策在下面的屏幕截图所示:
到目前为止,我偶然发现了使用这种方法
textView.setText(Html.fromHtml(myHtml); textView.setMovementMethod(LinkMovementMethod.getInstance());
其中myHtml是一个href.
但它并没有给我控制我需要例如发射片段等.
知道如何在下面的两个例子中实现这一点吗?
1> Tushar Gogna..:
我认为我分享这个有点晚了,但我已经使用SpannableStringBuilder实现了相同的目标.
只需初始化TextView
您要添加2个或更多侦听器的内容,然后将其传递给我创建的以下方法:
private void customTextView(TextView view) {
SpannableStringBuilder spanTxt = new SpannableStringBuilder(
"I agree to the ");
spanTxt.append("Term of services");
spanTxt.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
Toast.makeText(getApplicationContext(), "Terms of services Clicked",
Toast.LENGTH_SHORT).show();
}
}, spanTxt.length() - "Term of services".length(), spanTxt.length(), 0);
spanTxt.append(" and");
spanTxt.setSpan(new ForegroundColorSpan(Color.BLACK), 32, spanTxt.length(), 0);
spanTxt.append(" Privacy Policy");
spanTxt.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
Toast.makeText(getApplicationContext(), "Privacy Policy Clicked",
Toast.LENGTH_SHORT).show();
}
}, spanTxt.length() - " Privacy Policy".length(), spanTxt.length(), 0);
view.setMovementMethod(LinkMovementMethod.getInstance());
view.setText(spanTxt, BufferType.SPANNABLE);
}
在您的XML中,用于android:textColorLink
添加您选择的自定义链接颜色.像这样:
//#C36241 - Rust
这看起来像这样:
希望它可以帮助某人.:)
我认为这应该是公认的答案:-)
如果不需要翻译字符串,此方法效果很好
2> harrane..:
你可以使用Linkify(android.text.Spannable,java.util.regex.Pattern,java.lang.String)
String termsAndCOnditions= getResources().getString(R.string.terms_and_conditions);
String privacyPolicy = getResources().getString(R.string.privacy_policy);
legalDescription.setText(
String.format(
getResources().getString(R.string.message),
termsAndConditions,
privacyPolicy)
);
legalDescription.setMovementMethod(LinkMovementMethod.getInstance());
Pattern termsAndCOnditionsMatcher= Pattern.compile(termsAndConditions);
Linkify.addLinks(legalDescription, termsAndConditionsMatcher, "terms:");
Pattern privacyPolicyMatcher = Pattern.compile(privacyPolicy);
Linkify.addLinks(legalDescription, privacyPolicyMatcher, "privacy:");
然后你可以使用该方案来启动一个活动,例如在AndroidManifest中添加方案:
如果要执行自定义操作,可以将intent-filter设置为当前活动,该活动将具有singleTop启动模式.
这将导致onNewIntent被触发,可以进行自定义操作:
@Override
protected void onNewIntent(final Intent intent) {
...
if (intent.getScheme().equals(..)) {
..
}
}