我尝试按照以下示例在我的警报对话框中的TextView中建立HTTP链接,但它不起作用:
How do I make links in a TextView clickable?
我能让它工作的唯一方法是将链接文本直接放入我的字符串并将android:autoLink="web"
放入我的TextView中。但我不想看到整个链接,只是名称。
这是我创建对话框的地方:
@Override
protected Dialog onCreateDialog(int id) {
LayoutInflater factory = LayoutInflater.from(this);
switch (id) {
case DISCLAIMER:
final View disclaimerView = factory.inflate(R.layout.disclaimer_dialog, null);
final TextView dtv = (TextView) disclaimerView.findViewById(R.id.disclaimer_body);
dtv.setText("v"+versionName+"\n\n\u00A9"+Calendar.getInstance().get(Calendar.YEAR)+" "+"Developer\n\n" +
getString(R.string.alert_dialog_disclaimer_body));
dtv.setMovementMethod(LinkMovementMethod.getInstance());
return new AlertDialog.Builder(MyActivity.this)
.setView(disclaimerView)
.setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
})
.create();
}
return null;
}
这是我在R.layout.disclaimer_dialog
中的TextView:
<TextView
android:id="@+id/disclaimer_body"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_marginBottom="10dp"
android:gravity="center"
/>
这是我的字符串资源:
<string name="alert_dialog_disclaimer_body">This application was developed and written by me.\n\nGraphs use AChartEngine licensed under <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>.\n\nThe rest goes here.</string>
答案 0 :(得分:1)
TextView.setText(CharSequence)的文档说明:
设置TextView的字符串值。 TextView 不接受类似HTML的格式化,您可以使用XML资源文件中的文本字符串。要设置字符串样式,请将android.text.style。*对象附加到一个SpannableString,或者参阅可用资源类型文档,以获取在XML资源文件中设置格式化文本的示例。
根据他们的建议,Formatting and Styling在样式与HTML标记标题下解释了如何同时拥有HTML标记和格式代码。
我认为在您的情况下最简单的方法就是调整您的布局,以便在您使用的一个视图中显示您的版权声明,并将免责声明放在第二个视图中,您只需单独留下:< / p>
<TextView
android:id="@+id/disclaimer_body"
android:text="@string/alert_dialog_disclaimer_body"
...
/>