ImageView taking too much vertical space

后端 未结 4 771
Happy的楠姐
Happy的楠姐 2021-01-11 22:55

i am working on a project with a staggered gridview that can support varying height for each nested view,


           


        
相关标签:
4条回答
  • 2021-01-11 23:10

    as Naveen Tamrakar suggested, in StaggeredGridViewDemo they extended ImageView with the class "ScaleImageView" that solved the problem (not really sure what the problem is and why ImageView isnt wrapping around the image, but that's the solution)

    0 讨论(0)
  • 2021-01-11 23:16

    It's been a while, but for those who are dealing with this kind of problem right now: android:adjustViewBounds="true" should do the trick!

    0 讨论(0)
  • 2021-01-11 23:19

    I had a similar problem and I resolved it by overriding onMeasure method of RelativeLayout.

    package com.etsy.android.grid.util;
    
    import android.content.Context;
    import android.util.AttributeSet;
    import android.widget.RelativeLayout;
    
    public class DynamicHeightRelativeLayout extends RelativeLayout {
    
        public DynamicHeightRelativeLayout(Context context) {
            super(context);
        }
    
        public DynamicHeightRelativeLayout(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        public DynamicHeightRelativeLayout(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
        }
    
        @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    
            // Hack - This causes the height of RelativeLayout to match
            //        it's content when RelativeLayout is shown in StaggeredGridView. 
            heightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
    
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        }
    
    }
    

    Then I used this class in XML layout file:

    <?xml version="1.0" encoding="utf-8"?>
    <com.etsy.android.grid.util.DynamicHeightRelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:clickable="true" >
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            ... />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            ... />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            ... />
    
    </com.etsy.android.grid.util.DynamicHeightRelativeLayout>
    
    0 讨论(0)
  • 2021-01-11 23:25

    You can use the ScaleType property..like this:

     android:scaleType="centerCrop"
    

    There are several other types..just pick the one that fits best with your requirement.

    0 讨论(0)
提交回复
热议问题