Android 如何在不挤压的情况下将视图与另一视图的右侧对齐

Android 如何在不挤压的情况下将视图与另一视图的右侧对齐,android,xml,android-layout,Android,Xml,Android Layout,当然这是一个常见的用例,但我似乎无法用线性布局(或相对布局)来解决它,但也许我遗漏了一些东西 最好用图片来解释: 我有一个基本的textview聊天泡泡,另一个textview右边对齐(消息的时间戳) 两者都是包装内容(但时间戳可以精确设置为40dp,但似乎无关紧要) 现在,在第一条(顶部)消息中,它很短,因此您可以看到右侧的视图 但在第二个屏幕中,字符串很长,因此wrap\u内容占据了手机的整个宽度,将时间戳文本视图推出屏幕(水平线性布局,但相对相关的toRightOf也会这样做) 那么,我

当然这是一个常见的用例,但我似乎无法用线性布局(或相对布局)来解决它,但也许我遗漏了一些东西

最好用图片来解释:

我有一个基本的textview聊天泡泡,另一个textview右边对齐(消息的时间戳)

两者都是包装内容(但时间戳可以精确设置为40dp,但似乎无关紧要)

现在,在第一条(顶部)消息中,它很短,因此您可以看到右侧的视图

但在第二个屏幕中,字符串很长,因此
wrap\u内容占据了手机的整个宽度,将时间戳文本视图推出屏幕(水平线性布局,但相对相关的
toRightOf
也会这样做)

那么,我如何将时间戳放置在另一个视图的右侧,但时间戳的大小将为Guarented(不是wrap/squash,而是消息气泡字符串wrapps)

(我意识到我可以使用RTL布局,但我有来自双方的消息,所以在其他情况下我需要LTR+min sdk api 17对于布局黑客来说太高了)


任何帮助都将不胜感激,因为我一定错过了一些明显的东西。

如果您使用具有水平方向的
线性布局
小部件,并且其中一个子部件想要占用所有可用的水平空间,那么您应该使用布局权重

对于第一个
TextView
集:

layout_width="0dp"
layout_weight="1"
对于第二个
文本视图

layout_width="wrap_content"
在这种情况下,您可以说第二个
TextView
将占据所需的水平空间,而第一个
TextView
将占据其余空间。“0dp”只是一种防止额外布局度量调用的优化。

执行以下操作:

<LinearLayout
   android:width="match_parent"
   android:height="wrap_content"
   android:orientation="horizontal">

   <!-- the text -->
   <TextView
           android:width="0dp"
           android:height="wrap_content"
           android:weight="1"/>
<!-- the time -->
   <TextView
           android:width="match_parent"
           android:height="wrap_content"/>
</LinearLayout>

或者这个:

 <LinearLayout
       android:width="match_parent"
       android:height="wrap_content"
       android:orientation="horizontal">

       <!-- the text -->
       <TextView
               android:width="match_parent"
               android:height="wrap_content"
               android:maxWidth="300dp"/> <!-- can be a different dimention -->
    <!-- the time -->
       <TextView
               android:width="match_parent"
               android:height="wrap_content"/>
    </LinearLayout>


尝试将第一个文本视图的版面宽度设置为“0dp”,版面权重设置为“1”。第二个文本视图的宽度应该保持wrap_content.Boom,我想你在一个文本视图中找到了它!谢谢(但只有当这两个孩子的父母是wrap_内容)太好了,我会把这个作为答案提交给你,这样你就可以接受了。非常感谢。对不起,这行不通#1将永远不会显示第一个文本视图,因为其高度为0dp。重量不会影响高度,因为布局方向是水平的#2将起作用,但解决方案是不可接受的,您必须为所有可能的手机/平板电脑方向硬编码maxWidth。这不是一个好办法。我编辑了第一个答案,你所要做的就是把0dp放在宽度上。。。第二个答案是一个选项,如果您希望文本视图不大于固定大小。。。