【发布时间】:2017-02-20 07:30:56
【问题描述】:
您好,我有一个显示来自 url 的图像的 ImageView。图像大小不同。它们可以是方形的或纵向的或横向的。我需要相应地设置图像视图大小而不进行拉伸或裁剪。
如果图像大小是 512x512,那么 ImageView 应该是正方形并且对齐屏幕的中心。
如果图像大小类似于 1024x800,则 ImageView 大小应为水平矩形并对齐屏幕中心。
在所有情况下,宽度都应与父级匹配,但高度应相应调整。我怎样才能做到这一点?
在我的xml代码下面。
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v7.widget.CardView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:maxHeight="400dp" android:maxWidth="300dp" android:layout_margin="10dp" app:cardBackgroundColor="@color/white"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <android.support.v4.widget.NestedScrollView android:layout_width="wrap_content" android:layout_height="wrap_content" android:scrollbars="none"> <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:adjustViewBounds="true" android:scaleType="fitXY" android:minWidth="260dp" tools:ignore="ContentDescription" /> </android.support.v4.widget.NestedScrollView> <View android:layout_width="match_parent" android:layout_height="1dp" android:background="@color/grey_light" /> <TextView android:id="@+id/title" android:layout_width="match_parent" android:layout_height="35dp" android:layout_gravity="right" android:layout_margin="@dimen/space_small_low" android:background="@drawable/transparent_bg" android:textColor="@color/orange" /> </LinearLayout> </android.support.v7.widget.CardView> </FrameLayout>
【问题讨论】:
-
从 xml 中删除 android:scaleType="fitXY" 并按 (deviceheight * imagewidth)/devicewidth 等纵横比计算图像高度
-
删除它会在 ImageView 中创建空白空间。