Android 宽高相等的子view的工具类

作者: AndroidTech | 来源:发表于2017-03-16 17:07 被阅读0次

    最近,使用 fresco 的 SimpleDraweeView 的时候才发现这个 view 不能设置高度为 wrap_content,但是不同的手机,或者是每一行显示的数量不一样,要想让子view的宽高相等,就需要在代码里边获取屏幕的宽度,然后平分,得到宽度后设置相应的高度。

    package com.yourproject.utils;
    
    import android.content.Context;
    import android.util.DisplayMetrics;
    import android.view.View;
    import android.view.ViewGroup;
    
    /**
     * Created by xiaobian on 2017/3/15.
     * 这个类中只有一个方法,设置高度跟宽度一样,宽度获取屏幕宽度均分
     */
    
    public class LayoutUtil {
    
    
        /**
         * @param context context 上下文
         * @param view    需要设置的view
         * @param ratio   屏幕宽度均分为几个view
         * @param space   间隔宽度 dp
         */
        public static void setHeightAsWidth(Context context, View view, int ratio, int space) {
            DisplayMetrics dm = context.getResources().getDisplayMetrics();
            //获取屏幕宽度和高度
            int width = dm.widthPixels;
            int height = dm.heightPixels;
            ViewGroup.LayoutParams params = view.getLayoutParams();
            //用屏幕的宽度减去间隔的宽度,然后均等分。
            //CommonTools.dp2px(context, space) * (ratio - 1) 这个是所有间隔的宽度之和
            int length = (width - CommonTools.dp2px(context, space) * (ratio - 1)) / ratio;
            params.width = length;
            params.height = length;//设置当前控件布局的高度
            view.setLayoutParams(params);//将设置好的布局参数应用到控件中
        }
    }
    
    

    所有注释都很明白,先获取屏幕的宽度,然后由等分的份数和间隔的宽度,经过计算得到每个view的宽度应该是多少,然后设置宽度和高度一样就ok了。

    相关文章

      网友评论

        本文标题:Android 宽高相等的子view的工具类

        本文链接:https://www.haomeiwen.com/subject/bndjnttx.html