Android自定义URLSpan不起作用

亚历山大·图曼宁

问题是要处理我自己的单击URL范围的操作。我编写了自定义URLSpan,但是它不起作用。

这是我的自定义URLSpan:

public class CustomURLSpan extends android.text.style.URLSpan {
    private Command mClickAction;

    public CustomURLSpan(String url, Command clickAction) {
        super(url);
        mClickAction = clickAction;
    }

    @Override
    public void onClick(View widget) {
        try {
            mClickAction.execute();
        } catch (Exception e) {
        }
    }

    public static void clickifyTextView(TextView tv, Command clickAction) {
        SpannableString current = new SpannableString(tv.getText());
        URLSpan[] spans =
                current.getSpans(0, current.length(), URLSpan.class);

        for (URLSpan span : spans) {
            int start = current.getSpanStart(span);
            int end = current.getSpanEnd(span);

            current.removeSpan(span);
            current.setSpan(new CustomURLSpan(span.getURL(), clickAction), start, end, 0);
        }
    }

    public interface Command {
        void execute();
    }
}

在这里我用它:

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

    Bundle bundle = getArguments();
    String message = bundle.getString("message");
    final Activity activity = getActivity();
    text = new TextView(activity);
    text.setText(message);

    Linkify.addLinks(text, Linkify.EMAIL_ADDRESSES);
    CustomURLSpan.clickifyTextView(text, new CustomURLSpan.Command() {
        @Override
        public void execute() {
            //I want to do my stuff here, but not working
        }
    });
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity());
    alertDialogBuilder.setView(text);
    alertDialogBuilder.setNegativeButton("Close", new DialogInterface.OnClickListener() {
        ...
}

但是,如果我单击url,我会得到本地android对话框来选择电子邮件程序。我在互联网上找到的所有示例都是相同的。

编辑:根据来自@CommonWare的答案。我只需要:

...
public static void clickifyTextView(TextView tv, Command clickAction) {
    SpannableString current = new SpannableString(tv.getText());
    URLSpan[] spans =
            current.getSpans(0, current.length(), URLSpan.class);

    for (URLSpan span : spans) {
        int start = current.getSpanStart(span);
        int end = current.getSpanEnd(span);

        current.removeSpan(span);
        current.setSpan(new CustomURLSpan(span.getURL(), clickAction), start, end, 0);
        tv.setText(current); //this is what I need
    }
}

public interface Command {
    void execute();
}
常用软件

clickifyTextView()从中检索文本TextView,将其包装在新的文本SpannableString……然后再不更新TextView因此,clickifyTextView()正在修改的是什么的一个副本TextView,因此这并不影响TextView

尝试setText()在中的TextView跨度转换循环之后调用clickifyTextView()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

自定义字体在Android中不起作用

来自分类Dev

Android:样式中的自定义颜色不起作用

来自分类Dev

Android自定义方案不起作用

来自分类Dev

自定义背景资源在android中不起作用

来自分类Dev

Android导航抽屉自定义ListView不起作用

来自分类Dev

自定义视图的Android边框底部不起作用

来自分类Dev

自定义视图在Android Lollipop中不起作用

来自分类Dev

Android自定义视图onDraw不起作用

来自分类Dev

Android自定义状态按钮不起作用

来自分类Dev

DataBinding Android,自定义设置器,不起作用?

来自分类Dev

android中的自定义listView不起作用

来自分类Dev

Android 自定义通知按钮 onClick 不起作用

来自分类Dev

自定义CompositeCollection不起作用

来自分类Dev

自定义动画不起作用

来自分类Dev

自定义EmailValidator不起作用

来自分类Dev

自定义命令不起作用

来自分类Dev

自定义标签不起作用

来自分类Dev

自定义 FeatureUnion 不起作用?

来自分类Dev

自定义 UICollectionViewFlowLayout 不起作用

来自分类Dev

自定义表单不起作用

来自分类Dev

自定义窗口小部件的Android解析样式不起作用

来自分类Dev

切换到gradle后,android自定义视图属性不起作用

来自分类Dev

自定义样式操作栏在android 4中不起作用

来自分类Dev

Android自定义工具栏onOptionsItemSelected不起作用

来自分类Dev

Android:使用带自定义适配器的notifyDataSetChanged()刷新ListFragment不起作用

来自分类Dev

notifyDatasetChanged在Android中的自定义适配器的getView()方法中不起作用

来自分类Dev

使用的特定自定义字体在android应用程序中不起作用

来自分类Dev

Android:自定义ArrayAdapter不起作用,getView()未被调用

来自分类Dev

自定义进度可绘制在Android Lollipop(API 21)设备上不起作用

Related 相关文章

  1. 1

    自定义字体在Android中不起作用

  2. 2

    Android:样式中的自定义颜色不起作用

  3. 3

    Android自定义方案不起作用

  4. 4

    自定义背景资源在android中不起作用

  5. 5

    Android导航抽屉自定义ListView不起作用

  6. 6

    自定义视图的Android边框底部不起作用

  7. 7

    自定义视图在Android Lollipop中不起作用

  8. 8

    Android自定义视图onDraw不起作用

  9. 9

    Android自定义状态按钮不起作用

  10. 10

    DataBinding Android,自定义设置器,不起作用?

  11. 11

    android中的自定义listView不起作用

  12. 12

    Android 自定义通知按钮 onClick 不起作用

  13. 13

    自定义CompositeCollection不起作用

  14. 14

    自定义动画不起作用

  15. 15

    自定义EmailValidator不起作用

  16. 16

    自定义命令不起作用

  17. 17

    自定义标签不起作用

  18. 18

    自定义 FeatureUnion 不起作用?

  19. 19

    自定义 UICollectionViewFlowLayout 不起作用

  20. 20

    自定义表单不起作用

  21. 21

    自定义窗口小部件的Android解析样式不起作用

  22. 22

    切换到gradle后,android自定义视图属性不起作用

  23. 23

    自定义样式操作栏在android 4中不起作用

  24. 24

    Android自定义工具栏onOptionsItemSelected不起作用

  25. 25

    Android:使用带自定义适配器的notifyDataSetChanged()刷新ListFragment不起作用

  26. 26

    notifyDatasetChanged在Android中的自定义适配器的getView()方法中不起作用

  27. 27

    使用的特定自定义字体在android应用程序中不起作用

  28. 28

    Android:自定义ArrayAdapter不起作用,getView()未被调用

  29. 29

    自定义进度可绘制在Android Lollipop(API 21)设备上不起作用

热门标签

归档