【问题标题】:How to assign multiple string resources to a single textview?如何将多个字符串资源分配给单个文本视图?
【发布时间】:2019-07-31 07:16:05
【问题描述】:

我在字符串资源中创建了 3 个字符串。每个字符串都有一个外部链接。基本上,我试图将一个句子放在TextView 中,其中包含 3 个外部链接。请告诉如何在 Android 中执行此操作。

如果我们只能通过 XML 分配多个字符串,那将是最好的。

【问题讨论】:

  • 同一个文本视图中的 3 个链接,这是您要问的吗?
  • 你不能在 xml 中做到这一点,但是你可以在你的 java 文件中使用连接以编程方式实现这一点。
  • 是的,或者手动连接它们(将所有 3 个字符串放在同一个字符串资源中)
  • 致 Dustblue:yes.3 链接在同一个文本视图中的单句

标签: android android-layout textview android-resources


【解决方案1】:

如果您想组合您的 3 个链接并使其可点击,您可以试试这个:

<string name="combined_links"><![CDATA[<a href="%1$s"> my link one</a> <a href="%2$s"> my link two</a> <a href="31$s"> my link three</a>]]></string>
String sentence = getString(R.string.combined_links, getString(R.string.link_one), getString(R.string.link_two), getString(R.string.link_three))

【讨论】:

  • 这是不好的方法,请改用 StringBuilder。
  • 我用过这个,但 val 是红色的。有什么我必须进口的吗?我还使用字符串而不是 var 来存储,并在 textview 上使用 settext,但应用程序立即停止。
  • @Rhishikesh chogale:抱歉,这是因为我使用的是 Kotlin 语言。只需将val 替换为String
  • 谢谢扎克。我用过这种方法。链接文本来了,但页面上的链接不可点击
  • 您没有在问题中指定您希望链接可点击。如果您想这样做,我建议您使用包含 3 个链接的第 4 个字符串资源。我编辑了我的帖子。
【解决方案2】:

你必须使用 Spannable,下面是例子,看看

ClickableSpan linkClick = new ClickableSpan() {
@Override
public void onClick(View view) {
    Toast.makeText(getApplicationContext(), "Link Click",
            Toast.LENGTH_SHORT).show();
    view.invalidate();
}

@Override
public void updateDrawState(TextPaint ds) {
    if (textView.isPressed()) {
        ds.setColor(Color.BLUE);
    } else {
        ds.setColor(Color.RED);
    }
    textView.invalidate();
  }
};
textView.setHighlightColor(Color.TRANSPARENT);

Spannable spannableString = new SpannableString("Link in TextView");
spannableString.setSpan(linkClick, 0, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(spannableString, TextView.BufferType.SPANNABLE);
textView.setMovementMethod(LinkMovementMethod.getInstance());

在此,字符串Link in TextView只有“LINK”是可点击的

【讨论】:

  • 使用了 spannable 并且有效。谢谢。但现在滚动不在 textview 上执行。它在早些时候工作,但现在它已经停止工作。我用过滚动视图。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-10
  • 1970-01-01
相关资源
最近更新 更多