我的数据库中有一个字符串,如下所示
Sring a = "Victory to the <a href='word1'>GOD<\/a>, renowned in <a href='word2'>all three worlds!<\/a>";
text1.setText(Html.fromHtml(a));
现在我需要word1
的超链接ID(word2
和link
),这将有助于设置另一个textView属性。谁能告诉我怎么办?或任何其他方法来实现这一目标?
答案 0 :(得分:1)
我使用Webview而不是textview实现了这一点,并创建了自定义webview客户端来覆盖网址。
webview1.setWebViewClient(new myWebViewClient());
webview1.loadData(myHTMLStringWithHyperlinks, "text/html", "UTF-8");
private class myWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.i(TAG, "Id of hyperlink text is: "+url);
}
return true;
}
}
答案 1 :(得分:0)
使用SubString-method识别您的ID搜索 href ='的位置。创建一个现在包含子字符串的临时变量:
"word1'>GOD<\/a>, renowned in <a href='word2'>all three worlds!<\/a>"
然后从temp-vars frist字符中搜索' SubString的位置,直到'的位置包含您的ID
接下来,将此SubString放入temp-var:
>GOD<\/a>, renowned in <a href='word2'>all three worlds!<\/a>"
现在您可以重复前面的步骤来接收第二个ID
答案 2 :(得分:0)
Oki这是我现在想到的两个解决方案:
<强> 1。实现您自己的架构:
您需要先使用自定义架构http://
替换所有https//
(或customSchema://
以及您捕获的URL架构):
a.replaceAll("[\\"\']{1}[a-zA-Z]+:\/\/[\\"\']{1}", "customSchema://");
(我不确定我的正则表达式,我只是在这里写一下)
然后声明您的Activity可以在AndroidManifest.xml中处理这种模式:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="customSchema" />
</intent-filter>
此时,您的活动将针对每个customSchema:// ...点击的网址启动(即使在其他应用程序中)
您只需要检索活动中的URL并使用它执行所需的操作:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Get the intent that started this activity
Intent intent = getIntent();
Uri data = intent.getData();
}
如果是启动点击的活动,请参阅onNewIntent
<强> 2。在我看来,第二个解决方案是最简单的:
您将String拆分为单独的一个,目标是在不同的TextView中隔离“word1”,“word2”,如下所示:
<TextView 1 (Victory to the) /><TexTview 2 (word1 GOD) /><TextView 3 (renowned in) /><TextView 4 (word2 all three worlds) />
您可以使用正则表达式轻松完成此操作
您可以将word1和word2设置为标记(setTag()
)中的TextView 2和TextView 4以便稍后检索
在TextView 2和TextView 4上注册一个onClick事件,然后在这些事件中执行您想要的操作(在此获取标记(getTag()
)