将TextView转换为超链接

时间:2014-07-13 04:42:12

标签: java android xml

在我的Android应用程序中,如何将超链接显示为可在浏览器中打开的可点击链接。

为此,我从后端获取json消息,将数据保存在应用程序的SQLite数据库中,然后使用TextView在屏幕上显示它们 -

使用AsyncTask和Progress Dialog获取json消息 -

protected Void doInBackground(Void... params) {

     //some code goes here

     mMessages = json.getJSONArray(TAG_MESSAGES);
                // looping through all posts according to the
                // json
                // object returned
                for (int i = 0, length = mMessages.length(); i < length; ++i) {
                JSONObject c = mMessages.getJSONObject(i);

                // gets the content of each tag and put in
                // database
                String content = c.getString(TAG_MESSAGE);

                // add field in database and update
                db.addFieldInGcm(content);
    }
}

在onPostExecute()中,我使用TextView lblMessage对象刷新所有使用数据库保存的消息 -

// show messages on screen
        TextView lblMessage;
        lblMessage.setText("");
        List<String> messages = db.getAllGCMMessages();
        for (int k = messages.size() - 1; k >= 0; --k) {
            lblMessage.append(messages.get(k).toString() + "\n\n");

这是lblMessage的XML布局 -

<TextView
            android:id="@+id/lblMessage"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="2dip"
            android:padding="5dip"
            android:textColor="#000000"
            android:textStyle="bold"
            android:textSize="16dip"
            android:autoLink="all" ></TextView>    

似乎,XML android:autoLink 不适用于从数据库中提取的字符串。 所以,如果在显示消息时我使用的是 -

 if(  messages.get(k).toString().contains("http://www.") )

如何使用java在可点击的超链接中更改此字符串?

谢谢

2 个答案:

答案 0 :(得分:3)

使用Linkify.addLinks(textView, Linkify.ALL)

答案 1 :(得分:0)

这是我获得答案后的工作实施 -

private void showMessage() {
    // TODO Auto-generated method stub'
    // show messages on screen
    lblMessage.setText("");
    List<String> messages = db.getAllGCMMessages();
    for (int k = messages.size() - 1; k >= 0; --k) {

        String message  =  messages.get(k).toString();
        lblMessage.append(message + "\n\n");
     }

        Linkify.addLinks(lblMessage, Linkify.ALL);


    }

并且要更改超链接的颜色,我编辑了我的xml for textview -

android:textColorLink="#69463d"