android - 在 EditText 中链接以检测标签

标签 android android-edittext hashtag linkify

我正在使用 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/

相关文章:

android - 无法更改 RatingBar 的宽度和星星数

java - 更改 Android Studio 中的默认 LAUNCHER Activity

java - 如何根据给编辑 TextView 的计数值动态实现线性布局的代码

iphone - 如何在 IOS 中嵌入 Twitter feed 和/或主题标签

javascript - 正则表达式仅匹配第一次出现的情况

android - 使用加速度计检测运动 - (方向没有改变)?

android - 在为 Android Activity 创建 View 时显示进度对话框

Android:在单后退键按下软键盘应该被隐藏并且 Activity 也应该完成,如何让它成为可能?

android - 如何跨选项卡使用单个 fragment 中的 EditText?

php - 如何根据传入的哈希标签发送 PHP 请求?