x = (TextView)findViewById(R.id.xLink);
x.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
AlertDialog x = new AlertDialog.Builder(this.this).create();
x.setMessage(Html.fromHtml(getString(R.string.text)));
x.setButton(AlertDialog.BUTTON_NEUTRAL, "Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
x.show();
return false;
}
});
<TextView
android:id="@+id/xLink"
android:text="Click"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/blue1"
android:paddingTop="30dip"
android:paddingRight="10dip"
android:layout_gravity="right"
android:textSize="16dip" />
<string name = "text">at<br /><a href="tel:18004455667">1-800-445-5667 lt;/a>.</string>
所以基本上当您单击链接时会出现一个对话框,其中的数字似乎是一个链接,但是当您单击时,它什么都不做。这可能发生的任何原因?我已经尝试过更改w / out ascii字符,但什么也没做/
答案 0 :(得分:1)
我认为HTML锚是个问题,特别是如果您没有将资源text
设置为fromHTML()
,如下所示:textView.setText(HTML.fromHTML(getString(R.string.text)));
点击电话号码的最简单方法是autoLink
和直接文字:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="phone"
android:text="My Number: 1-800-762-2035"
/>
答案 1 :(得分:0)
请尝试阅读以下文档:
http://developer.android.com/reference/android/text/util/Linkify.html
您可能需要清理文字,因为周围的垃圾可能导致问题。
答案 2 :(得分:0)
这是你的答案,经过测试。
public class MainActivity extends Activity {
private AlertDialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AlertDialog.Builder builder = new Builder(MainActivity.this);
Spanned message = Html.fromHtml(getString(R.string.text));
final SpannableString str = new SpannableString(message);
Linkify.addLinks(str, Linkify.ALL);
builder.setMessage(str);
builder.setPositiveButton("OK", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
});
dialog = builder.create();
TextView t = (TextView) findViewById(R.id.textView1);
t.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
dialog.show();
// This must be called after dialog.show();
((TextView)dialog.findViewById(android.R.id.message)).setMovementMethod(LinkMovementMethod.getInstance());
return false;
}
});
}
}