android技术专栏Android技术知识Android开发

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

2017-03-16  本文已影响0人  AndroidTech

最近,使用 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了。

上一篇下一篇

猜你喜欢

热点阅读