内容插入自定义可绘制缩放

时间:2017-01-01 12:29:43

标签: android android-layout android-imageview listviewitem android-relativelayout

我有一个ListView,其中包含在relativeLayout中定义的自定义项,其中包含带有android:layout_width="match_parent"android:layout_height="wrap_content"的imageView以及可绘制的自定义向量作为源,其示意图如下所示:

+-------------------------------------------+
+    solid area              | some picture +
+-------------------------------------------+

问题是,当我转向横向模式时,图像会按比例放大(以加工父图像的宽度),但是保持纵横比也会增加高度。

理想情况下,我想定义内容插入(我从iOS中知道),以便上面的实心区域被拉伸以匹配新的宽度,并且“某些图片”区域保持相同的宽高比。总而言之,我会进行缩放,使得图像的高度(以及整个listView项目的高度)保持不变。

1 个答案:

答案 0 :(得分:1)

您可以使用子宽度中具有布局权重LinearLayout来获取要拉伸的实体区域。要使其工作,您应该为ImageView指定固定宽度。

此外,adjustViewBounds上的ImageView属性有助于保持正确的宽高比。

<?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>