【问题标题】:Force a string which sometimes can be a hyperlink to open a DialogFragment强制使用有时可以是超链接的字符串来打开 DialogFragment
【发布时间】:2018-05-17 00:44:15
【问题描述】:

我的应用中有一个文本视图,文本会定期更新,文本可以是简单的字符串,也可以是超链接。为了识别它是一个超链接,我在我的文本视图中添加了android:autoLink="web"

单击文本视图时,会打开一个对话框片段。该功能适用​​于简单的字符串,但是当涉及到超链接时,浏览器会自动打开。如何强制超链接只打开对话框片段而不是浏览器?

【问题讨论】:

    标签: java android hyperlink


    【解决方案1】:

    我就是这样做的:

            SpannableString ss = new SpannableString(getString(R.string.my_string));
            ClickableSpan clickableSpan = new ClickableSpan() {
                @Override
                public void onClick(View textView) {
                    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.link)));
                    startActivity(browserIntent);
                }
    
                @Override
                public void updateDrawState(TextPaint ds) {
                    super.updateDrawState(ds);
                    ds.setUnderlineText(false);
                }
            };
            ss.setSpan(clickableSpan, START_INDEX, LENGTH, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    
            terms.setText(ss);
            terms.setMovementMethod(LinkMovementMethod.getInstance());
            terms.setHighlightColor(Color.TRANSPARENT);
    

    更新:

    假设您的字符串是:“某事 LINK 另一件事”,并且您只希望 LINK 部分有下划线并在您单击它时打开浏览器。那么您的my_string 将是something Link another thing

    然后我们创建一个ClickableSpan,您只能将部分文本设置为可点击...然后您将其设置为setSpan.....START_INDEX 和 LENGTH 是您的第一个索引您希望可点击的文本,第二个是该可点击区域的长度。

    【讨论】:

    • 你能解释一下这里发生了什么吗?
    • @Stackover67 我只是更新我的答案。如果您有任何问题,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多