因此,对于我的生活,我似乎无法弄清楚什么似乎是一个简单的布局问题。我希望也许一双新鲜的眼睛可以帮助我。
问题:我在垂直LinearLayout中有三个视图。
我不能使用自定义视图,因为这是一个Widget。
问题是,当可用空间太小时,ImageView将屏幕下方的TextView推到我想要的预期结果是ImageView调整大小以适应两个TextViews保留它们尽可能在观看区域内。我可以通过设置为ImageView的布局权重来获得此效果,但由于某种原因,这会打破纵横比。
预期结果在左边。但是当尺寸很高时会失去纵横比。
守则:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<TextView
android:paddingBottom="8dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000"
android:textStyle="bold"
android:textSize="12sp"
android:text="Text"/>
<ImageView
android:contentDescription="@string/app_name"
android:src="@drawable/sunny"
android:scaleType="fitXY"
android:cropToPadding="true"
android:adjustViewBounds="true"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="0dp"/>
<TextView
android:paddingTop="8dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000"
android:textStyle="bold"
android:textSize="12sp"
android:text="Text"/>
</LinearLayout>
示例:
当ImageView没有调整大小以适应它时,TextView被推出屏幕:
ImageView设置为layout_weight="1"
和layout_height="0dp"
。它现在调整大小以适应底部的TextView,但会失去其宽高比:
ImageView设置为layout_weight="1"
,layout_height="0dp"
和scaleType="fitCenter"
。这样可以保留纵横比,同时还可以调整大小以适应底部的TextView。但是有额外的空格,TextView不再靠近图像。
非常感谢任何帮助。希望我充分解释了这个问题。谢谢:))!
森
答案 0 :(得分:0)
尝试这样的事情:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="100"
android:gravity="center">
<TextView
android:paddingBottom="8dp"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="20"
android:textColor="#000000"
android:textStyle="bold"
android:textSize="12sp"
android:text="Text"/>
<ImageView
android:contentDescription="@string/app_name"
android:src="@drawable/sunny"
android:scaleType="fitXY"
android:cropToPadding="true"
android:adjustViewBounds="true"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="60"/>
<TextView
android:paddingTop="8dp"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="20"
android:textColor="#000000"
android:textStyle="bold"
android:textSize="12sp"
android:text="Text"/>
</LinearLayout>