最大图像视图大小

时间:2016-04-18 11:22:54

标签: android android-layout

我有你在图片上看到的布局。每个ImageView的单元格按宽度和高度设置为相同大小。缩放类型的图像是“fitXY”。目前,所有图像都会根据屏幕大小调整大小,并且通常会进行升级。

我想实现以下行为: set maxSize - 图像的最大宽度和高度。当单元格小于maxSize时,ImageView的行为与“fitXY”类似,但如果单元格大于maxSize,则图像不会进一步放大。我不想拥有不同DPI的图像,而是想要动态调整大图标的大小。

据我所知,不同的屏幕尺寸和分辨率应该有不同的maxSize值。

enter image description here

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="4"
        android:orientation="horizontal"
        android:background="@drawable/app_bg"
        android:weightSum="2"
        android:padding="8dp">
        <LinearLayout
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:weightSum="2">
                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:layout_weight="1"
                    android:src="@drawable/icon_www"
                    android:scaleType="fitXY"
                    android:padding="40dp"/>
                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:src="@drawable/icon_fb"
                    android:layout_weight="1"
                    android:padding="40dp"
                    android:scaleType="fitXY"/>
        </LinearLayout>
        <LinearLayout
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:weightSum="2">
                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:src="@drawable/icon_twitter"
                    android:layout_weight="1"
                    android:scaleType="fitXY"
                    android:padding="40dp"/>

                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:src="@drawable/icon_youtube"
                    android:layout_weight="1"
                    android:scaleType="fitXY"
                    android:padding="40dp"/>


        </LinearLayout>
    </LinearLayout>

1 个答案:

答案 0 :(得分:2)

添加android:adjustViewBounds="true"并更改&#39; android:scaleType =&#34; center&#34;&#39;到android:scaleType="fitCenter"

<ImageView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:src="@drawable/icon_www"
    android:scaleType="fitCenter"
    android:padding="40dp"
    android:adjustViewBounds="true"/>

修改 由于android:maxHeight为0dp而layout_height为1,因此您的layout_weight无法正常工作,您将为视图指定特定的高度值。 max_heightmax_width仅适用于您不具有视图的特定高度和宽度值的情况。将wrap_content作为layout_height并删除layout_weight。同样,通过将layout_width设为match_parent,您可以为视图的高度定义特定值。将match_parent替换为wrap_content即可。