Android “如何制作文本视图”;“成长”;从右边?

Android “如何制作文本视图”;“成长”;从右边?,android,layout,textview,Android,Layout,Textview,我想创建一个类似UI的消息。我正在创建一个包含两种类型行的列表视图:左行和右行 每行包含一个TextView。左侧用于显示发件人发送的消息,而右侧用于显示当前用户发送的消息 我想做的是将右边的TextView设置为占据屏幕的一定百分比,使文本与左边对齐,但随着内容动态增长 为了澄清,以下是我想要实现的目标: 蓝色行是“左”行,黑色行是“右”行 为了实现这一点,我使用了LinearLayout和RelativeLayout的各种组合,左边是空视图,右边是所需的textView。我得到的是这样的东西

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

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

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

为了澄清,以下是我想要实现的目标:

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

为了实现这一点,我使用了LinearLayout和RelativeLayout的各种组合,左边是空视图,右边是所需的textView。我得到的是这样的东西,这不是我想要的:(文本总是从精确的点开始)

我还成功地设置了gravity:right,它将文本向右对齐,这也不是我想要的

有没有办法让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>


您应该在文本视图上设置layout\u width=“wrap\u content”,在空视图上设置layout\u weight=“1”。这样,文本视图的宽度应与所需的宽度相同,多余的空间将被您的空视图占用。

是的,让您的视图(任意视图)
包装内容。
。这将允许视图增长到其父视图允许的大小。如果您的父母只允许您的视图占用一定的空间,那么孩子将永远不会变大。不,父对象也受其父对象的限制,依此类推。

基本上,您希望文本在一行中右对齐,否则左对齐

要测量文本的宽度,请使用
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);
}
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)我理解父视图和生长视图的部分。包含包裹内容和权重的提示似乎非常接近。但是,我的右视图扩展到左视图。@user485146-你是说视图的右边界扩展到另一视图的左边界上?TextView的左边界扩展到视图的右边界上。