【问题标题】:How to make textview "grow" from right?如何使 textview 从右侧“增长”?
【发布时间】:2011-10-04 00:58:30
【问题描述】:

我想创建一个类似消息的 UI。我正在创建一个包含两种类型行的列表视图:左行和右行。

每一行包含一个TextView。左侧用于显示来自发件人的消息,而右侧用于显示来自当前用户的消息。

我想要做的是将右侧的 TextView 设置为占据屏幕的一定百分比,使文本向左对齐,但随着内容动态增长。

为了澄清,这是我想要实现的图像:http://dl.dropbox.com/u/2482095/wanted.png

蓝色行是“左”行,黑色行是“右”行。

为了实现这一点,我使用了 LinearLayout 和 RelativeLayout 的各种组合,左侧放置了一个空视图,右侧放置了所需的 textView。我得到的是这样的东西,这不是我想要的:http://dl.dropbox.com/u/2482095/notWanted1.png(文本总是从确切的点开始)

我还设法设置了重力:右,它将文本向右对齐,这也不是我想要的。

有什么方法可以让 TextView 随内容一起增长?

[编辑] 我的 xml 文件看起来像这样:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="horizontal"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:padding="5dp">
        <View android:id="@+id/emptyView"
           android:layout_width="80dp"
           android:layout_height="wrap_content"
           android:layout_weight="1" />
        <TextView android:id="@+id/messageBody"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content" />
    </LinearLayout>

【问题讨论】:

    标签: android layout textview


    【解决方案1】:

    您应该在 TextView 上设置 layout_width="wrap_content",在空视图上设置 layout_weight="1"。这样一来,TextView 的宽度应该与需要一样宽,而多余的空间将被您的空视图占用。

    【讨论】:

      【解决方案2】:

      基本上你想要的是文本在一行中右对齐,否则左对齐。

      要测量文本的宽度,请使用Paint.measureText() 方法。所以你可能会使用这样的东西作为你的视图:

      Paint paint = new Paint(view.getPaint());
      LayoutParams params = view.getLayoutParams();       
      
      int availableWidth = params.width - view.getPaddingLeft() - view.getPaddingRight();
      
      int textWidth = (int) Math.ceil(paint.measureText(view.getText().toString()));
      
      if(textWidth <= availableWidth) {
          view.setGravity(Gravity.RIGHT);
      } 
      else {
          view.setGravity(Gravity.LEFT);
      }
      

      【讨论】:

        【解决方案3】:

        是的,有你的观点(任何观点)wrap_content。这将允许视图增长到其父级允许的大小。如果您的父母只允许您的视图占用一定数量的空间,那么孩子将永远不会变大。不是,父级也受 父级等限制。

        【讨论】:

        • 我理解父母和成长的部分。包装内容和重量的提示似乎非常接近。但是,我的右视图扩展了左视图。
        • @user485146 - 你的意思是一个视图的右边界扩展了另一个视图的左边界?
        • TextView 的左边界扩展了 View 的右边界。
        猜你喜欢
        • 1970-01-01
        • 2017-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-02
        • 1970-01-01
        • 2021-07-23
        • 2012-06-19
        相关资源
        最近更新 更多