1
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&lt;br /&gt;&lt;a href="tel:18004455667"&gt;1-800-445-5667 lt;/a&gt;.</string>

所以基本上,当您单击链接时,会出现一个对话框,其中的数字似乎是一个链接,但是当您单击时,它什么也不做。这可能发生的任何原因?我已经尝试过使用 ascii 字符进行更改,但什么也没做/

4

3 回答 3

1

我相信 HTML 锚是问题所在,特别是如果您没有将资源设置textfromHTML()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"
     />
于 2012-12-05T20:09:41.187 回答
0

尝试阅读以下文档:

http://developer.android.com/reference/android/text/util/Linkify.html

您可能需要清理文本,因为它周围的垃圾可能会导致问题。

于 2012-12-05T20:15:44.067 回答
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;

            }
        });


    }

}
于 2012-12-05T21:38:25.343 回答