Android中textview中的可点击字符串

时间:2017-10-05 02:08:30

标签: android clickablespan

我在strings.xml中添加了代码,如

<string name="terms_agree_text">By Logging in, you are agreeing to our &lt;u>terms and condition&lt;/u> and &lt;u>privacy policy&lt;/u></string>

我也用像这样的bhahasa语言添加了相同的字符串

 <string name="terms_agree_text">Dengan masuk, Anda menyatakan bahwa Anda telah menyetujui &lt;u>syarat dan ketentuan&lt;/u> dan &lt;u>kebijakan privasi&lt;/u> kami</string>

然后我设置了这样的标签

mBinding.termsAndCondition.setText(Html.fromHtml(getString(R.string.terms_agree_text)));

在这里,我必须为此2underline文本执行可点击事件。但是,我试图使用

sp.setSpan(click, startIndex, endIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

但是这个字符串索引对于其他语言环境是错误的。 所以目前我已经在文本中添加了View to clickable。

那么请你建议这样做。 谢谢

1 个答案:

答案 0 :(得分:0)

如果字符串是字符串的跨区域,则跨度必须基于字符串的一部分。我假设你正在尝试硬编码跨度的起始索引。如果您打算这样做,那么您需要为每种语言提供一个硬编码索引,并且需要您将其提取为值-en和values-jp和values-sp以及您支持的所有其他值,并且具有{ {1}}而在另一种语言中,例如<start_index_of_terms_span>40

但是,您需要知道每种支持语言的索引。

为什么不将字符串分成多个部分。将颜色和样式应用于为条款和条件或隐私政策进行翻译的一个部分或短语,而不是尝试在较大的字符串中突出显示或更改颜色。这将是一个更容易的修复,然后应用基于所有语言的动态范围。

但是如果你必须这样做,那么为每种语言创建你的维度值文件夹,并调整起点的维度值。或者您可以欺骗并检查用户的语言,并根据每种语言的大型切换案例确定要使用的起始索引。无论哪种方式,它都会有点混乱,所以你可以选择凌乱的你。

古德勒克。