如何在Android中设置ImageView的最小和最大大小
我想为ImageView指定最小宽度/高度和最大宽度/高度。图像应缩放以适合 这样做:如何在Android中设置ImageView的最小和最大大小,android,android-layout,android-imageview,Android,Android Layout,Android Imageview,我想为ImageView指定最小宽度/高度和最大宽度/高度。图像应缩放以适合 这样做: <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:minWidth="100dp" android:maxWidth="200dp" android:minHeight="100dp" android:maxHeight="
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="100dp"
android:maxWidth="200dp"
android:minHeight="100dp"
android:maxHeight="200dp"
android:src="@drawable/ic_launcher" />
最小宽度和高度按其应执行,但忽略最大宽度和高度
如果我设置android:adjustViewBounds=“true”:
然后,最大宽度和高度按其应有的方式执行,但忽略最小宽度和高度
有没有一种方法可以同时实现这两种功能?最后,我创建了自己的视图,该视图扩展了ImageView并覆盖了onMeasure() 此视图现在可以像这样使用:
<my.package.ResizingImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="100dp"
android:maxWidth="200dp"
android:minHeight="100dp"
android:maxHeight="200dp"
android:src="@drawable/ic_launcher" />
这是我想要的,但难道没有更简单的解决方案吗?
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minWidth="150dp"
android:minHeight="150dp"
>
<RelativeLayout
android:id="@+id/imageLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:layout_gravity="center_vertical"
>
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:src="@drawable/trump"
/>
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:visibility="gone" />
</RelativeLayout>
</LinearLayout>
请参见在Imageview中为容器布局指定最小高度和宽度并放置adjustViewBounds。这样,您的任务将在简单的步骤中完成。过去仅使用XML几乎不可能做到这一点,但现在使用
ConstraintLayout
,它非常简单
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintWidth_min="100dp"
app:layout_constraintWidth_max="200dp"
app:layout_constraintHeight_min="100dp"
app:layout_constraintHeight_max="200dp"
app:layout_constrainedWidth="true"
app:layout_constrainedHeight="true"
android:scaleType="centerCrop" />
</androidx.constraintlayout.widget.ConstraintLayout>
您可以使用
fitXY
或centerCrop
的scaleType
;其他人不会强制图像符合ImageView
您是对的。我厌倦了不能用Android做简单的事情。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minWidth="150dp"
android:minHeight="150dp"
>
<RelativeLayout
android:id="@+id/imageLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:layout_gravity="center_vertical"
>
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:src="@drawable/trump"
/>
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:visibility="gone" />
</RelativeLayout>
</LinearLayout>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintWidth_min="100dp"
app:layout_constraintWidth_max="200dp"
app:layout_constraintHeight_min="100dp"
app:layout_constraintHeight_max="200dp"
app:layout_constrainedWidth="true"
app:layout_constrainedHeight="true"
android:scaleType="centerCrop" />
</androidx.constraintlayout.widget.ConstraintLayout>