【问题标题】:How to set minimum height of image view and keep "wrap_content" as height when using Glide使用 Glide 时如何设置图像视图的最小高度并保持“wrap_content”为高度
【发布时间】:2021-03-18 09:41:30
【问题描述】:

我从服务器获取不同尺寸的图像,所以我使用“wrap_content”作为imageView 高度。它工作得很好。

问题是每个图像都需要一些时间来加载,在那个时候,图像没有高度,而且看起来很奇怪,所以我需要设置“imageView”组件的一些最小高度。

但是,如果为“imageView”设置任何高度,“wrap_content”功能就会消失,并将图像加载到同一个容器中。

我需要知道设置图像视图最小高度但保留“wrap_contnet”功能的可能性。

滑行代码

    Glide.with(context)
            .load(dataList?.get(position)?.defaultImage)
            .into(holder.ivBackgroundImage)

【问题讨论】:

  • 所以只需在 xml 中应用 minHeight 吗?那不行吗?
  • 如果我添加 minHeight,wrap_content 功能就会消失,它会将每个图像加载到相同的高度
  • 只有在您提供的 minHeight 大于图像的实际尺寸时才会消失,对吧?那么一切都会默认为 minHeight
  • 如果我不设置 minHeight,有些图片的高度是 200dp,这很好,但我将 minHeight 设置为 50dp,所有图片的高度都是 50dp。
  • 我会保留两张图片,一张用于从 glide 加载,另一张用于占位符,当我从 glide 获取图像时,它们的 minHeight 和 toogle 可见性

标签: android android-layout android-glide


【解决方案1】:

尝试使用这种方法:

  1. 在初始状态下使用“minHeight/minWidth”属性。
  2. 开始加载并收听结束(使用 Glide 的回调),此时将属性“minHeight/minWidth”更改为默认值并将“width/height”设置为“wrap_content”。

【讨论】:

  • 能否提供此 Glide 回调的 kotlin 代码,此方法不返回图像视图的宽度/高度 -> onResourceReady(resource: Drawable?, model: Any?, target: Target ?
【解决方案2】:

尝试使用 minHeight 和 minWidth 属性设置最小图像高度

代码

  <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:minHeight="100dp"
        android:minWidth="100dp"/>

【讨论】:

    【解决方案3】:

    您可以使用占位符而不是设置最小高度/最小宽度。它会很高效,而且 UI 看起来也不错。

    GlideApp
        .with(your context)
        .load(url)
        .centerCrop()
        .placeholder(R.drawable.loading_image)
        .error(R.drawable.error_image)
        .into(myImageView);
    

    【讨论】:

      【解决方案4】:

      您可能需要使用ImageView 的两个属性,即scaleTypeadjustViewBounds,如下所示

       <ImageView
                  android:id="@+id/YOUR_IMAGE"
                  android:layout_width="100dp"
                  android:layout_height="100dp"
                  android:layout_gravity="center"
                  android:adjustViewBounds="true"
                  android:scaleType="fitXY"/>
      

      您可以根据需要设置android:scaleType,请查看下图

      另一种解决方案,您可以使用 Glide's 属性 Override 并相应地设置图像的高度和宽度,如下所示

      Glide
          .with(context)
          .load(path)
          .apply(new RequestOptions().override(400, 200))
          .into(imageViewResizeCenterCrop);
      

      【讨论】:

        【解决方案5】:

        你可以使用你想要的高度和宽度。

                            Glide.with(Context)
                           .load(Path)
                           .override(225, 225)
                           .centerCrop() - If u dont' need you can remove it 
                           .into(image);
        

        【讨论】:

          【解决方案6】:

          对于上述问题的解决方案,您可以使用占位符。这将在图像加载时显示。

           Glide
              .with(myFragment)
              .load(url)
              .centerCrop()
              .placeholder(R.drawable.loading_spinner)
              .into(myImageView);
          

          【讨论】:

            【解决方案7】:

            您可以像许多其他用户所说的那样使用最小高度方法设置 go。请记住,有两个不同的属性,一个是android:minHeight="50dp",另一个是app:layout_minHeight="50dp"

            确保你选择了正确的,即使使用wrap_content,你也应该很好

            【讨论】:

              猜你喜欢
              • 2016-10-31
              • 1970-01-01
              • 2015-11-12
              • 2013-04-07
              • 2018-01-16
              • 2020-04-14
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多