我的应用程序有一个Switch控件,标签为“我同意条款和条件”。
如何设置条款和条件(而不是其余部分),如链接(蓝色和下划线),并检测点击时间,以便我可以:
一个。在Web浏览器中打开URL,或
湾将新片段弹出到堆栈中?
答案 0 :(得分:0)
您可以使用this课程。
以下是示例:
String termsAndConditions = "I agree to the Terms and Conditions";
SpannableString spannableString = new SpannableString(termsAndConditions);
int tIndex = signUpText.indexOf('T');
spannableString.setSpan(new ForegroundColorSpan(Color.BLUE), tIndex, termsAndConditions.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(spannableString);
注意:上面的示例将“条款和条件”部分变为蓝色
另外,为了使您的部分文字可以点击,请使用this类
修改强>
mSwitchTermsAndConditions = (Switch) findViewById(R.id.switch_terms_and_conditions);
mTermsAndConditions = (TextView) findViewById(R.id.terms_and_conditions);
SpannableString spannableString = new SpannableString("I agree to the Terms and Conditions");
ClickableSpan linkSpan=new ClickableSpan(){
@Override public void onClick(View widget){
//open fragment or webview
}
@Override public void updateDrawState(TextPaint ds){
ds.setUnderlineText(true);
ds.setColor(Color.BLUE);
}
};
String s = "I agree to the Terms and Conditions";
int tIndex = s.indexOf('T');
spannableString.setSpan(linkSpan, tIndex, s.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mTermsAndConditions.setText(spannableString);
mTermsAndConditions.setMovementMethod(LinkMovementMethod.getInstance());
mSwitchTermsAndConditions.setChecked(false);
<强> XML:强>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="horizontal"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<Switch
android:id="@+id/switch_terms_and_conditions"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"/>
<TextView
android:id="@+id/terms_and_conditions"
android:text="I agree to the Terms and Conditions" android:layout_width="wrap_content"
android:layout_height="wrap_content" />
答案 1 :(得分:0)
您可以使用Linkify
类将视图中的文字用作链接。
帖子Linkify your Text!展示了如何让它发挥作用。
基本网络链接直接用于在网络浏览器中打开网址,而如果您想要启动另一个Activity
或类似内容,则需要使用在此定义的scheme
您活动的意图过滤器。
例如,您可以在视图文本中添加一个链接,其中包含条款和条件,如:
TextView lblTerms = (TextView) findViewById(R.id.lblTerms);
Pattern myPattern = Pattern.compile("Terms and Conditions");
String link = "com.example.myapp://showTermsAndCondition";
Linkify.addLinks(lblTerms, myPattern, link);
这将要求您对目标活动的意图过滤器类似于:
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.VIEW" />
<data android:scheme="com.example.myapp" />
</intent-filter>
现在,当你链接它时,它应该打开你的目标活动。
答案 2 :(得分:0)
使用ClickableSpan处理点击
ClickableSpan policyClick = new ClickableSpan() {
@Override
public void onClick(View widget) {
openPopUp();
}
}
};
将ClickableSpan设置为SpannableString
String text = "I agree to the Terms and Conditions";
SpannableString policyText = new SpannableString(text);
policyText.setSpan(clickableSpan, 0, text.length(), 0);
policyText.setSpan(new ForegroundColorSpan(Color.BLUE), 0, text.length(), 0);
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setText(policyText, TextView.BufferType.SPANNABLE);