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