【问题标题】:Textview wrap around View [closed]Textview环绕视图[关闭]
【发布时间】:2011-04-07 07:20:33
【问题描述】:

我正在尝试让我的水平布局充分利用可用空间。

在显示活动的信息中,我有一个“事实框”,后跟一个大文本框。我希望信息框向右浮动,类似于下图。

这可以使用android TextView api吗?

【问题讨论】:

  • 使用 webview 的任何替代方法?
  • 其实我找到了更好的解决方案。 StaticLayout 类将让您测量给定绘画的字符串。这使我可以将文本拆分为三个 TextView - 顶部、侧面和底部。
  • 已经回答 [这里][1] [1]:stackoverflow.com/questions/2474012/… 它是一个准备就绪的原生小部件

标签: android android-layout textbox alignment textview


【解决方案1】:

找到了这个解决方案!!从源代码查看 ---> answer source

如何让一些布局元素环绕

这是人们在 android 上处理布局时可能会遇到的问题。

假设您想在句子中间放置一张图片。您可以添加几个 TextView 和一个 ImageView 但如果水平空间变得太小,两个 TextView 将开始独立环绕,这看起来会很奇怪。您希望图像成为 TextView 的一部分,并且整个句子可以很好地环绕。 为此: * 将三个对象替换为一个 Spannable TextView * 使用 SpannableStringBuilder 附加所有字符串(不要忘记添加一个额外的字符(例如空格),它将被您的图像替换) * 最后在该构建器上使用 setSpan(ImageSpan, begin, end, flag),其中 ImageSpan 是包含图片可绘制对象的 ImageSpan,begin 是您插入的字符的索引

下面是代码的样子:

将 android:bufferType="spannable" 添加到您的 TextView

SpannableStringBuilder builder = new SpannableStringBuilder();
builder.append(mContext.getText(R.string.part1));
int lengthOfPart1 = builder.length();
builder.append(" ");
builder.append(mContext.getText(R.string.part2));
Drawable d = mContext.getResources().getDrawable(R.drawable.picasaIcon);
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); // <---- Very important otherwise your image won't appear
ImageSpan myImage = new ImageSpan(d);
builder.setSpan(myImage, lengthOfPart1, lengthOfPart1 + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
myTextView.setText(builder);

【讨论】:

  • 这是一个不错的技巧。不幸的是 spannable 只能用于将图像定位在一条线上。我想一个选项可能是将图像切割成许多行高的片段,然后可以将其作为跨度插入。
  • 哇,非常感谢您发布该来源和此答案。我一直在到处寻找,从没想过要使用Spannable。这应该是答案!
【解决方案2】:

我知道已经晚了,但对于仍在努力实现这一目标的人来说,这里有一个旨在实现这一目标的库。 https://github.com/deano2390/FlowTextView

【讨论】:

    【解决方案3】:

    我建议为此使用 WebView。您可以使用通常的 HTML / CSS 格式在 Web 视图中格式化文本,您想要的布局很容易实现。

    【讨论】:

    • 对,但是共享资源和东西会比较乱?
    • 我投了反对票只是因为 FlowTextView 有一个更简单、更简洁的解决方案(请参阅其他答案)
    【解决方案4】:

    我担心这对于单个 TextView 是不可能的。 TextView 必须是一个矩形,并且不能显示子视图。一种解决方法可能是创建两个 TextView 并制作第一个文本视图,然后询问第一个文本视图它可以显示多少并将其余字符串添加到第二个文本视图。

    【讨论】:

    • 我找不到检查 TextView 中可以显示多少文本的方法。也许有办法做到这一点,但我现在找不到。
    • 我知道 Paint.breaktext 方法。如果我可以从 TextView 中获取 Paint,那是可行的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多