我正在使用 Linkify
检测 TextView
中的主题标签,它工作正常,但我想在 EditText
控件中实现它。
这是我在 TextView
中使用 Linkify
的方式:
Pattern tagMatcher = Pattern.compile(("#([ء-يA-Za-z0-9_-]+)"));
String newActivityURL = "content://com.hashtag.jojo/";
Pattern urlPattern = Patterns.WEB_URL;
TransformFilter transformFilter = new TransformFilter() {
// skip the first character to filter out '@'
public String transformUrl(final Matcher match, String url) {
return match.group(0);
}
};
Linkify.addLinks(TextView, Linkify.ALL);
Linkify.addLinks(TextView, tagMatcher,newActivityURL, null,transformFilter);
如何将其应用于 EditText
?
最佳答案
只需使用 EditText 而不是 TextView,因为 EditText 是从 TextView 扩展而来的。它一定工作正常。
小例子:
EditText editText1 = (EditText) findViewById(R.id.editText1);
editText1.setText("http://http://www.dzone.com/");
Linkify.addLinks(editText1 , Linkify.WEB_URLS);
如果您想实时检查它,只需执行以下操作:
editText1.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Linkify.addLinks(editText1 , Linkify.WEB_URLS);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
已更新
final TransformFilter filter = new TransformFilter() {
public final String transformUrl(final Matcher match, String url) {
return match.group();
}
};
final Pattern hashtagPattern = Pattern.compile("#([ء-يA-Za-z0-9_-]+)");
final String hashtagScheme = "content://com.hashtag.jojo/";
final Pattern urlPattern = Patterns.WEB_URL;
editText1.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
System.out.println(count);
}
@Override
public void afterTextChanged(Editable s) {
Linkify.addLinks(s, hashtagPattern, hashtagScheme, null, filter);
Linkify.addLinks(s, urlPattern, null, null, filter);
}
});
关于android - 在 EditText 中链接以检测标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23842829/