多个超链接点击textview Android

时间:2013-02-15 11:10:29

标签: android

我的数据库中有一个字符串,如下所示

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(word2link),这将有助于设置另一个textView属性。谁能告诉我怎么办?或任何其他方法来实现这一目标?

3 个答案:

答案 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()