【问题标题】:How to shift a textview in a new line if another textview is too long如果另一个文本视图太长,如何在新行中移动文本视图
【发布时间】:2013-02-16 03:40:08
【问题描述】:

在 RelativeLayout 我有两个 TextViews 在同一行上对齐: 第一个左对齐,第二个右对齐。 仅当第一个 texview 太长时,如何才能将第二个 TextView 移动到“新行”中?

这是我的应用程序的屏幕截图:

在第一种情况下,第一个文本视图“Something”和第二个(时间)对齐。 在第二种情况下,我想将第二个 textview 移到第一个下。

这是我的 xml 文件的代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativeView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="5dip"
android:paddingRight="5dip"
android:paddingTop="5dip"
android:paddingBottom="5dip" >

<ImageView
    android:id="@+id/immagine"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginRight="10dp"
    android:src="@drawable/ic_launcher" />

<TextView
    android:id="@+id/nickTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_toRightOf="@+id/immagine"
    android:text="Nickname"
    android:textSize="14dp" />

<TextView
    android:id="@+id/messaggioTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/nickTextView"
    android:layout_toRightOf="@+id/immagine"
    android:text="Messaggio"
    android:textColor="#333"
    android:textSize="14dp" />

<TextView
    android:id="@+id/oraText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/nickTextView"
    android:layout_alignBottom="@+id/nickTextView"
    android:layout_alignParentRight="true"
    android:text="TextView"
    android:textColor="#999"
    android:textSize="12dip" />

<TextView
    android:id="@+id/dataText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/messaggioTextView"
    android:layout_alignBottom="@+id/messaggioTextView"
    android:layout_alignParentRight="true"
    android:text="TextView"
    android:textColor="#999"
    android:textSize="12dip" />

感兴趣的文本视图是messaggioTextView 和oraText。

有什么想法吗?

【问题讨论】:

  • 你的应用截图在哪里?
  • 我可以在帖子中看到截图。链接是link
  • 解决您的问题的方法是您需要为每个 textview 设置固定宽度....但不是您想要的(移动 textview)
  • 如果您计算文本的数量,则意味着您可以做到这一点。只需将两个文本视图都设置在线性布局下。方向最初是水平的。如果左侧 textview 设置上下文增加.. 更改方向。垂直。
  • @Release 你明白它是否适合你

标签: android android-layout textview alignment


【解决方案1】:
<TextView
    android:id="@+id/messaggioTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toLeftOf="@+id/dataText"
    android:layout_below="@+id/nickTextView"
    android:layout_toRightOf="@+id/immagine"
    android:text="texttextkhgfkdklgfhkldfhghdgkljdlfkjhg;ldf;hhvasdv;svabsab"
    android:textColor="#333"
    android:textSize="14dp" />


<TextView
    android:id="@+id/dataText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/messaggioTextView"
    android:layout_alignParentRight="true"
    android:text="TextView"
    android:textColor="#999"
    android:textSize="12dip" />

【讨论】:

  • 谢谢@Janmejoy,这是问题的解决方案,但我想将消息从左到右完全展开。在这种情况下,我想在 messagetextview 下移动时间 textview
  • 现在我遇到了这种情况:screenshot 但是你可以看到消息 textview 并没有占用所有空间,因为它在 oraText textview 之前停止。我想要这个设置:如果消息文本视图太长,则将 oraText 文本视图移到
  • 我想更清楚一点:如果有空间:对齐两个文本视图。否则,将第二个 textview 移到第一个下(右对齐不会改变)
  • @Release 你能附上任何截图吗,正是你需要的......它会很容易帮助你......
  • ok...这是sample image :当消息的文本视图很短时,消息和时间戳对齐。当消息的文本视图太长(它填满整行)时,时间戳在消息文本视图下的另一行
【解决方案2】:

考虑为布局的文本部分实现 FlowLayout(或使用其他人制作的 here)。

【讨论】:

    【解决方案3】:

    我知道的三种方式,也许存在更好的方式:
    1)在 Html 中加载您的文本并将其设置为文本视图(您可以使用 html 样式和...)

    String text = "<font color=#cc0029>text 1</font> <font color=#ffcc00>text 2</font>";
    textView.setText(Html.fromHtml(text));
    

    2)在一个文本视图中加载您的文本,但为文本的每个部分设置跨度。
    3)创建自定义 TextView 类并计算文本长度,然后如果大于您想要在此下方设置另一个 textview 布局

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多