2017-10-05 69 views
0

我添加的代碼中的strings.xml像可點擊的字符串中的TextView在Android中

<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> 

也是我加入了同一個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))); 

在這裏,我必須爲這個2下線文本做點擊事件。但是,我試圖使用

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

但是,此字符串索引對於其他語言環境是錯誤的。 所以目前我已添加查看可點擊的文本。

所以,你可以請建議這樣做。 謝謝

+0

你從哪裏得到startIndex。 Span依賴於開始和結束索引,並且必須提供它。因此,如果您正在搜索字符串,則需要爲當前字符串找到它,並確認您在搜索範圍和表示層上都獲得了本地化字符串。 – Sam

+0

起始索引是= 40,而在中文裏是59,是起始索引。那麼怎麼可能在我的案例中使用Span? – CarinaMj

回答

0

如果跨度必須是字符串的跨區域,則該跨度必須基於字符串的一部分。我假設你正試圖對span的開始索引進行硬編碼。如果您打算這樣做,那麼您需要爲每種語言編寫一個硬編碼索引,並要求您將其提取到values-en和values-jp和values-sp以及您支持的所有其他值,並與<start_index_of_terms_span>40另一種語言是<start_index_of_terms_span>59

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

爲什麼不把它分成多個部分。將顏色和樣式應用於翻譯了條款和條件或隱私政策的部分或詞組,而不是嘗試在較大的字符串中突出顯示或更改其顏色。這將是一個更容易的修復,然後應用基於所有語言的動態跨度。

但是,如果您必須執行此操作,請爲每種語言創建您的維度值文件夾並調整起點的維度值。或者您可以欺騙並檢查用戶的語言,並根據每種語言的大型開關情況確定使​​用哪個起始索引。無論哪種方式,它會有點混亂,所以這取決於你在哪個混亂你很好。

Goodluck。

相關問題