【问题标题】:Link keyword in TextView to file/directory将 TextView 中的关键字链接到文件/目录
【发布时间】:2010-09-02 20:05:26
【问题描述】:

有什么方法可以将 TextView 中的关键字链接到用户 SD 卡上的文件或目录?我的应用程序在崩溃时会生成堆栈跟踪文件,我希望用户能够单击“关于”对话框中的链接以查看最新的或包含所有这些文件的文件夹。 (类似“如果此应用崩溃,请通过 myapp@example.com 将 [link] 最新的 stack.trace 文件 [/link] 发送给我们。”)

我知道可以使用以下代码创建 Web 链接,但我尝试将其修改为使用“file:///sdcard/path/to/file/stack.trace”,这会导致我的应用强制单击链接时关闭。

<string name="strSample">This is Web link to &lt;a href=&quot;http://www.google.com&quot;>Google&lt;/a>!</string>

final TextView tvSample = (TextView)findViewById(R.id.tvSample);
tvSample.setMovementMethod(LinkMovementMethod.getInstance());
String strSample = getResources().getString(R.string.strSample);
tvSample.setText(Html.fromHtml(strSample));

【问题讨论】:

    标签: android file directory hyperlink textview


    【解决方案1】:

    您可以通过替换返回SpannableHtml.fromHtml(strSample) 部分来扩展您的方法。创建您自己的Spannable 并将ClickableSpan 添加到其中。在onClick 方法中,您可以放置​​您需要的任何逻辑。这是您可以扩展的快速示例

    public Spannable getProfileLink(final Context context) {
        final String name = firstName + " " + lastName;
        Spannable spans = SpannableStringBuilder.valueOf(name);
        ClickableSpan clickSpan = new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                // TODO - call profile here
                Toast.makeText(context, "Will call profile", Toast.LENGTH_LONG);
            }
    
        };
        spans.setSpan(clickSpan, 0, name.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        return spans;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多