是否可以在文本视图的某些部分添加onclick?比如我的代码是这样的,
String content = "Hello this a test.. For more details contact @Peter";
someTextView.setText(content);
Run Code Online (Sandbox Code Playgroud)
我想为"@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);
Run Code Online (Sandbox Code Playgroud)
和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;
}
Run Code Online (Sandbox Code Playgroud)
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);
}
}
Run Code Online (Sandbox Code Playgroud)
感谢@user370305 的响应.. 然而他在他的回答中遗漏了一些代码片段.. 为了其他人的利益,我粘贴了对我有用的整个代码,
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView someTextView = (TextView)findViewById(R.id.someTextView);
String content = "Hello this a test.. For more details contact";
someTextView.setText(content);
SpannableString link = makeLinkSpan("@Peter", new View.OnClickListener() {
@Override
public void onClick(View v) {
//Do something here..
}
});
someTextView.append(link);
}
makeLinksFocusable(someTextView);
}
private void makeLinksFocusable(TextView tv) {
MovementMethod m = tv.getMovementMethod();
if ((m == null) || !(m instanceof LinkMovementMethod)) {
if (tv.getLinksClickable()) {
tv.setMovementMethod(LinkMovementMethod.getInstance());
}
}
}
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;
}
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);
}
}
Run Code Online (Sandbox Code Playgroud)
使用 Java 代码可以实现这一点:
someTextView.setOnClickListener(new View.OnClickListener(){
public void onClick(){
//Do Stuff
}
});
Run Code Online (Sandbox Code Playgroud)
但首先请确保将其设置为可点击。
someTextView.setClickable(true);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7749 次 |
最近记录: |