我试图添加多个链接在一个textview类似于谷歌& Flipboard在下面的屏幕截图中显示了他们的条款和条件以及隐私政策:
到目前为止,我偶然发现使用这种方法
textView.setText(Html.fromHtml(MYHTML);
textView.setMovementMethod(LinkMovementMethod.getInstance());
其中myHtml是一个href
但是它不能让我控制我需要的,例如发起片段等
在下面的两个例子中,他们是如何实现的?
解决方法
你可以使用
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> <category android:name="android.intent.category.DEFAULT" /> <action android:name="android.intent.action.VIEW" /> <data android:scheme="terms" /> <data android:scheme="privacy" /> </intent-filter>
如果要执行自定义操作,则可以将intent-filter设置为当前活动,这将具有singleTop启动模式.
这将导致onNewIntent被触发,可以使您的自定义操作:
@Override protected void onNewIntent(final Intent intent) { ... if (intent.getScheme().equals(..)) { .. } }