2012-02-12 152 views
1

在描述我的更改日誌的對話框中,我想要鏈接到我們的twitter和facebook頁面。因爲我不想在文本中擁有裸露的網址,所以我使用了Html.fromHtml(..)和標準的html樣式鏈接(a href)。但是,無論我如何進行對話(無論是通過AlertDialog.Builder還是具有自定義視圖的對話框),我都無法使鏈接可點擊。我也在textview中設置了linksClickable=true,但沒有運氣。如果有人能幫助我,那會很棒!對話框中的可點擊鏈接

change_log_dialog.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/linlay2" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<TextView 
    android:id="@+id/dialog_text_view" 
    android:layout_width="match_parent" 
    android:layout_height="0dip" 
    android:layout_margin="@dimen/view_padding" 
    android:layout_weight="1" 
    android:linksClickable="true" 
    android:text="@string/gen_placeholder" 
    android:textAppearance="?android:attr/textAppearanceMedium" > 
</TextView> 

<LinearLayout 
    android:id="@+id/verticallayout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:divider="?android:attr/dividerHorizontal" 
    android:dividerPadding="0dip" 
    android:orientation="vertical" 
    android:showDividers="beginning" > 

    <Button 
     android:id="@+id/help_close" 
     style="?android:attr/buttonBarButtonStyle" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/help_close" /> 

</LinearLayout> 

調用該對話框當前方法:

Dialog dialog = new Dialog(this); 
dialog.setTitle(R.string.changetitle); 
View v = getLayoutInflater().inflate(R.layout.change_log_dialog, null); 
((TextView) v.findViewById(R.id.dialog_text_view)).setText(getRawAsset(R.raw.change)); 
dialog.setContentView(v); 
return dialog; 

與getRawAsset(..):

public Spanned getRawAsset(int id) { 

    InputStream mStream = getResources().openRawResource(id); 
    InputStreamReader mRead = new InputStreamReader(mStream); 
    BufferedReader mReader = new BufferedReader(mRead); 
    StringBuilder returner = new StringBuilder(); 
    String line = ""; 
    try { 
     while ((line = mReader.readLine()) != null) { 

      returner.append(line); 

     } 

     return Html.fromHtml(returner.toString()); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return null; 

} 

回答

2

也許你會拉特呃使用Linkify而不是Html.fromHtml(...)Linkify以及Linkify.TransformFilter應該能夠將鏈接轉換爲更加用戶友好的內容。

+0

但這隻適用於裸露的網址,不是嗎?我想在正常文本上有鏈接(例如「訪問我們的Facebook頁面」),我不希望用戶看到我們網站的完整網址,因爲它有點難看 – 2012-02-12 23:47:25

+0

@Espiandev我編輯了我的答案。 – 2012-02-12 23:50:22

+0

完美的作品,謝謝! – 2012-02-13 00:06:52