在Android中的TextView中单击字符串



我在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)));

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

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

但是,此字符串索引对于其他语言环境是错误的。因此,目前我添加了文本中可单击的视图。

所以您可以建议这样做。谢谢

跨度必须基于字符串的一部分,如果它是字符串的跨区域。我假设您正在尝试硬编码跨度的起始索引。如果您打算这样做,那么您需要使用每个语言的硬编码索引,并且需要您将其提取到值-EN和values-jp and values-s-s-s-s-s-s-sp,以及您支持的所有其他值,并使用<start_index_of_terms_span>40具有尺寸例如,用另一种语言是<start_index_of_terms_span>59

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

为什么不只是将字符串分为多个部分。将颜色和样式应用于为条款和条件或隐私政策翻译的一个部分或短语,而不是试图在较大的字符串中突出显示或更改其颜色。这将是一个容易得多的修复程序,而不是根据所有语言应用动态跨度。

但是,如果您必须执行此操作,请为每种语言创建尺寸值文件夹,并调整起点的尺寸值。或者,您可以仅作弊并检查用户的语言,并根据每种语言的大开关案例确定要使用的索引。无论哪种方式,这都会有些混乱,所以您可以通过哪个凌乱。

goodluck。

最新更新