gpt4 book ai didi

java - ImageView centerCrop 溢出 ImageView 边界?

转载 作者:行者123 更新时间:2023-12-01 11:12:20 25 4
gpt4 key购买 nike

我有以下布局:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_gravity="top|center"
android:background="@drawable/rounded_corner"
android:layout_marginTop="50dp"
android:layout_width="250dp"
android:layout_height="350dp">

<ImageView
android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="270dp"
android:scaleType="centerCrop"
android:adjustViewBounds="true"
android:src="@drawable/card_image"
android:layout_gravity="top"
android:layout_marginTop="0dp"/>

</FrameLayout>

图像应使用其矩形填充图像并对其进行缩放以保持其纵横比。当我不移动 View 时它工作正常:

enter image description here

但是,当我移动 View 时,图像被绘制到其边界之外:

enter image description here

我正在使用这个library移动卡片。

如何防止 ImageView 在其边界之外绘制图像?

最佳答案

我使用这个库 Picasso ,类似于下面的示例。我对您提供的代码进行了一些修改以使其熟悉。

<FrameLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_gravity="top|center"
android:background="@drawable/rounded_corner"
android:layout_marginTop="50dp"
android:layout_width="250dp"
android:layout_height="350dp">

<!-- Note that I've deleted a lot of properties from the ImageView -->
<!-- This is because Picasso will do a lot of that for us -->
<ImageView
android:id="@+id/image_view"
android:layout_width="match_parent"
android:layout_height="270dp"
android:src="@drawable/card_image"
/>
</FrameLayout>

当您扩充 View 后,您可以像平常一样使用 findViewById 查找 View 。

ImageView imageView = (ImageView) inflatedView.findViewById(R.id.image_view);
// Here comes the Picasso bit
Picasso.with(getActivity()) // You have to provide a Context
.load(R.drawable.card_image) // Can be a Uri, File or String path as well
.into(imageView); // Use .into(ImageView view, Callback callback) to register a listener for the image loading.

这只会将图像放入 ImageView 中,而不对其进行修改。您可以添加 .centerCrop().fit() (下面的示例)和其他漂亮的方法来自动编辑图像到容器属性。由于您在示例中使用了 centerCrop,因此我不会详细介绍这些内容,但请参阅我在顶部提供的 Picasso github 页面以获取更多文档。

要居中裁剪或适合图像,请在 load().into() 之间添加方法:

Picasso.with(getActivity())
.load(R.drawable.card_image)
.centerCrop()
.fit()
.into(imageView);

Picasso 的另一个强大功能是它如何处理缓慢或不成功的加载:您可以添加占位符和错误资源:

Picasso.with(getActivity())
.load(R.drawable.card_image)
.placeholder(R.drawable.loading_image)
.error(R.drawable.error_image
.into(imageView);

祝你好运!

关于java - ImageView centerCrop 溢出 ImageView 边界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32210536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com