在我的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在可点击的超链接中更改此字符串?
谢谢
答案 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"