我有一个包含TextView和ImageView的LinearLayout。 TextView宽度设置为wrap_content
,但问题是当宽度达到父宽度时。文本内容将正确地换行到2行或更多行,但TextView和ImageView将被剪切在左侧和右侧。我能找到的最相似的问题是this one,它是从2013年开始的,没有解决方案。
具体来说,我在this view遇到了问题,但我创建了以下更简单的视图来举例说明问题:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/card_top_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:id="@+id/card_top_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="One Two Three Four Five"
android:textSize="40sp"/>
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/ic_volume_up_black_48dp"/>
</LinearLayout>
当布局与另一个视图重叠时,在LinearLayout上设置android:clipChildren="false"
甚至不会阻止裁剪。
这是最后一张图片来证明它在真实设备上发生,而不仅仅是布局查看器:
我基本上没有想法。有什么想法吗?这是Android布局系统的问题吗?感谢您的帮助和考虑!
答案 0 :(得分:1)
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/card_top_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:id="@+id/card_top_text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="One Two Three Four Five"
android:textSize="40sp"/>
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/ic_volume_up_black_48dp"/>
</LinearLayout>
编辑: 有关layout_weight如何运作的文档的一点引用
LinearLayout还支持使用android:layout_weight属性为各个孩子分配权重。此属性根据应在屏幕上占用多少空间为视图指定“重要性”值。较大的权重值允许它扩展以填充父视图中的任何剩余空间。子视图可以指定权重值,然后视图组中的任何剩余空间将按其声明权重的比例分配给子项。默认权重为零。
例如,如果有三个文本字段,其中两个声明权重为1,而另一个没有权重,则没有权重的第三个文本字段不会增长,只会占用其内容所需的区域。在测量所有三个场之后,另外两个将平均扩展以填充剩余的空间。如果第三个字段的权重为2(而不是0),那么它现在被宣布比其他字段更重要,因此它获得剩余空间总量的一半,而前两个平均分配其余部分。