我有一个带有字符串的CheckBox,上面写着“我已阅读并了解条款和条件”。现在,我想在一个链接上创建“条款和条件”,这个链接打开了一个可以读取条款和条件的alertdialog。没什么特别的。
我正在考虑以下方面:
<string name="cont_agree">I have read and understood the <a ref="open alertdialog">terms and conditions.</a></string>
是否有可能,我现在应该在哪里使用“open alertdialog”? 如果不能这样做,我该怎么做?
增加: 要打开网址,您可以使用以下代码:
<string name="cont_agree"><a ref="http://www.stackoverflow.com">Stackoverflow</a></string>
但是如何从字符串中打开alertdialog或者说另一个屏幕呢?我见过这样做的应用程序,所以当然可以,但是怎么样?
编辑: 这是我用于SpannableStringBuilder的代码:
SpannableStringBuilder text = new SpannableStringBuilder();
text.append(getString(R.string.before));
//Now create a ClickableSpan
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View view) {
d.show(); //Here dialog will be displayed
}
};
//Now append the TOS string
text.append(getString(R.string.popup));
//Declare that the "TOS" string is a clickableSpan
text.setSpan(clickableSpan, getString(R.string.before).length(),getString(R.string.before).length()+getString(R.string.popup).length(), 0); //Check on API setSpan method
((CheckBox)findViewById(yourview)).setMovementMethod(LinkMovementMethod.getInstance());
((CheckBox)findViewById(yourview)).setText(text, BufferType.SPANNABLE);
我仍然在第一个“text.append”行获得了一些标记。 此行有多个标记:
答案 0 :(得分:2)
首先设置对话框
Dialog d = new Dialog(context);
d.setTitle... etcetc
在您的values.xml中创建2个字符串
<string name="before">I have read and understood the</string>
<string name="popup">TOS</string</string>
现在您可以使用SpannableStringBuilder
SpannableStringBuilder text = new SpannableStringBuilder();
text.append(getString(R.string.before));
//Now create a ClickableSpan
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View view) {
d.show(); //Here dialog will be displayed
}
};
//Now append the TOS string
text.append(getString(R.string.popup));
//Declare that the "TOS" string is a clickableSpan
text.setSpan(clickableSpan, getString(R.string.before).length(), getString(R.string.before).length()+getString(R.string.popup).length(), 0); //Check on API setSpan method
((CheckBox)findViewById(yourview)).setMovementMethod(LinkMovementMethod.getInstance());
((CheckBox)findViewById(yourview)).setText(text, BufferType.SPANNABLE); //AAAAND WE'RE DONE!