android:autoLink =“phone”如何处理点击?

时间:2017-10-02 13:28:22

标签: android

我的layout.xml片段:

<TextView
    android:id="@+id/textViewPhoneValue"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:autoLink="phone"
    android:textColorLink="@color/color_blue" />

行。现在手机显示为蓝色链接。当点击它打开电话来电时。好的。

我使用 android:autoLink =“phone”,因为它正确格式化了许多电话号码。 现在我需要处理用户点击此链接并使用我的自定义处理程序。 textViewPhoneValue 可以包含五个电话号码。我需要点击第二个电话号码才能获得此号码。有可能吗?

1 个答案:

答案 0 :(得分:1)

更好的方法是多个textView,但如果你不能这样做。 您可以使用spannable文本添加多个单击功能

String s="Phone1 Phone2 Phone3";
    SpannableString ss = new SpannableString(s);
    String first =" Phone1";
    String second =" Phone2";
    String third =" Phone3";
    int firstIndex = s.toString().indexOf(first);
    int secondIndex = s.toString().indexOf(second);
    ClickableSpan firstwordClick = new ClickableSpan() {
        @Override
        public void onClick(View widget) {
            ///............
        }
    }; 
    ClickableSpan secondwordClick = new ClickableSpan() {
        @Override
        public void onClick(View widget) {
            ///............
        }
    }; 
    ss.setSpan(firstwordClick,firstIndex, firstIndex+first.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    ss.setSpan(secondwordClick,secondIndex, secondIndex+second.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    textView.setLinksClickable(true);
    textView.setMovementMethod(LinkMovementMethod.getInstance());
    textView.setText(ss,BufferType.SPANNABLE);

这不是一个很好的例子,但你可以得到主要的想法。