我有一个ListView,其中包含一个在relativeLayout中定义的自定义项,其中包含一个带有
android:layout_width =“match_parent”的imageView和android:layout_height =“wrap_content”以及一个自定义向量drawable作为源,其示意图如下所示:
+-------------------------------------------+
+ solid area | some picture +
+-------------------------------------------+
问题是,当我转向横向模式时,图像会按比例放大(以得到父图像的宽度),但是保持纵横比也会增加高度.
理想情况下,我想定义一个内容插入(我知道它来自iOS),以便上面的实心区域被拉伸以匹配新的宽度,并且“一些图片”区域保持相同的宽高比.总而言之,我会进行缩放,使得图像的高度(以及整个listView项目的高度)保持不变.
最佳答案 您可以使用子宽度中布局权重的LinearLayout来获取要拉伸的实体区域.要使其工作,您应该为ImageView指定固定宽度.
此外,ImageView上的adjustViewBounds属性将有助于保持正确的宽高比.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:orientation="horizontal">
<!-- this can be any view or view group, the layout params are the important part-->
<View
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
...
/>
<!-- set this to an absolute width that will be the same for portrait & landscape -->
<ImageView
android:layout_width="240dp"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
...
/>
</LinearLayout>