如果没有要设置的图像,请删除ImageView高度

时间:2017-03-09 22:10:40

标签: android android-layout

有时我会在ImageView中设置图像,有时不会 问题是当我没有图像时,我想删除ImageView添加的空白区域。

if(post.getImageUrl()!=null || !post.getImageUrl().equals("")) {
            Picasso.with(context).load(post.getImageUrl()).into(holder.imageView);
        }
        else{
            holder.imageView.setVisibility(View.GONE);
        }

我的xml

<ImageView
                android:layout_width="match_parent"
                android:layout_height="500dp"
                android:scaleType="centerCrop"
                android:padding="0dp"
                android:id="@+id/imageViewHero"
                android:adjustViewBounds="true"/>

但它没有用,空白区仍然存在。
有什么想法吗?

3 个答案:

答案 0 :(得分:1)

反转你的逻辑。

在XML

中将可见性设置为GONE
android:visibility="gone"

在加载图像的Picasso条件下,将其设置为VISIBLE,然后删除其他

Picasso imgLoader = Picasso.with(context);
String imgUrl = post.getImageUrl();
if(!TextUtils.isEmpty(imgUrl)) {
    holder.imageView.setVisibility(View.VISIBLE);
    imgLoader.load(imgUrl).into(holder.imageView);
}

或者,加载默认的占位符图像

Picasso.with(context)
    .load(post.getImageUrl())
    .placeholder(R.drawable.user_placeholder) // A default image
    .error(R.drawable.user_placeholder_error) // An error image
    .into(holder.imageView);

答案 1 :(得分:1)

试用此解决方案

在ImageView xml中设置visibilty To Gone

android:visibility="gone"

并在代码中显示内部if if block

if(post.getImageUrl()!=null || !post.getImageUrl().equals("")) {


holder.imageView.setVisibility(View.Visible);
                        Picasso.with(context).load(post.getImageUrl()).into(holder.imageView);
                    }


         <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="500dp"
                    android:scaleType="centerCrop"
                    android:padding="0dp"
                    android:visibility="gone"
                    android:id="@+id/imageViewHero"
                    android:adjustViewBounds="true"/>

答案 2 :(得分:1)

最佳答案是将ImageView的高度设置为0:

imgDisplay.setImageBitmap(null);