我遇到了xml布局的问题。
这是完整的xml
:
<FrameLayout
android:id="@+id/root"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="match_parent">
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:adjustViewBounds="true"
tools:src="@drawable/segment_cultura"/>
<LinearLayout
android:id="@+id/message_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="@color/black_divider"
android:padding="4dp">
<TextView
android:id="@+id/message"
style="@style/TextAppearance.AppCompat.Caption"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ellipsize="end"
android:maxLines="2"
android:textColor="@color/white_secondary_text"
/>
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="end"
android:src="@drawable/ic_message"/>
</LinearLayout>
<ImageView
android:id="@+id/cancel"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="top|end"
android:layout_margin="4dp"
android:src="@drawable/ic_close"/>
</FrameLayout>
目标:将此项用作固定高度水平RecyclerView
的项目,仅使用image
来确定项目的大小。其他观点(例如message_container
或cancel
)需要适应此大小。
问题:message_container
需要填充项目的宽度,但在message
中有长文本时,不应修改项目宽度。它应该到第二行然后进行椭圆化。相反,message
永远不会转到第二行,并使父母(message_container
和root
)放大以适合其文字。
我正在寻找只涉及xml
的解决方案,如果我找不到,custom view
优先于adapter
中的某些逻辑。
感谢您的时间。
答案 0 :(得分:0)
我通过使用:
解决了这个问题image.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (root != null && image.getWidth() != 0)
root.getLayoutParams().width = image.getWidth();
});