В диалоговом окне, описывающем журнал изменений, я хотел бы иметь некоторые ссылки на наши страницы Twitter и Facebook. Поскольку я не хочу иметь голые URL-адреса в тексте, я использую Html.fromHtml(..)
и стандартные ссылки html-стиля (href). Тем не менее, я не могу заставить ссылки быть кликабельными, независимо от того, как я делаю диалог (через AlertDialog.Builder или Dialog с пользовательским представлением). Я также установил 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;
}
Но это работает только с голыми URL-адресами, не так ли? Я хочу иметь ссылку на обычный текст (например, «посещать нашу страницу на facebook»), я не хочу, чтобы пользователи просматривали полные URL-адреса наших веб-сайтов, потому что это немного уродливо. –
@Espiandev. Я отредактировал свой ответ. –
Работает отлично, спасибо! –