是否可以在文本 View 的某些部分添加onclick?例如我的代码是这样的,

String content = "Hello this a test.. For more details contact @Peter";
someTextView.setText(content);

我想为“@Peter”添加一个onClick事件。那可能吗?

TIA。

最佳答案

简单的: -)

SpannableString link = makeLinkSpan("@Peter", new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // Peforme Click
        }
    });
String content = "Hello this a test.. For more details contact";
someTextView.setText(content);
someTextView.append(link);

makeLinkSpan()方法是
private SpannableString makeLinkSpan(CharSequence text, View.OnClickListener listener) {
    SpannableString link = new SpannableString(text);
    link.setSpan(new ClickableString(listener), 0, text.length(),
        SpannableString.SPAN_INCLUSIVE_EXCLUSIVE);
    return link;
}

ClickableString 类别
private static class ClickableString extends ClickableSpan {
    private View.OnClickListener mListener;
    public ClickableString(View.OnClickListener listener) {
        mListener = listener;
    }
    @Override
    public void onClick(View v) {
        mListener.onClick(v);
    }
}

10-07 19:06
查看更多