简介:------------------------------------------------------------------------------------------------------
先上图吧
看到没有,GridView 的子元素不管大小都平均分配大小,整齐布局,就像来到一个女儿国,你懂的
好了废话不多说,我显现的原理就是首先获取本手机的屏幕的大小PX,方法如下:
<br> WindowManager windowManager = getWindowManager();
<br> Display display = windowManager.getDefaultDisplay();
int whid = display.getWidth();//PX
然后在我们的Adapter里面,指定子元素的宽度和高度,当然需要通过计算:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.item_girdview_fragment_home, null);
holder = new ViewHolder(convertView);
//设置gridview item宽高自动适应各种屏幕
int width = (int) ((whid - (5 * SomeInfoData.Dp2px(context, 5))) / 3);
//5表示子元素之间的距离,3表示一排显示的个数,这样就平均排列了
AbsListView.LayoutParams params = new AbsListView.LayoutParams(width, width-10);
convertView.setLayoutParams(params);
//设置宽度和高度一样
<br> convertView.setTag(holder);
<br> } else {
<br> holder = (ViewHolder) convertView.getTag();
<br> }
/*** * px 转dp * @param context * @param dp * @return */
public static int Dp2px(Context context, float dp) {
final float sc = context.getResources().getDisplayMetrics().density;
int dd=(int)(dp * sc + 0.5f);//浮点数取整数
return dd;
}
DEMO下载地址: CSDN http://download.csdn.net/download/z815101/10202061
DEMO下载地址: Github 点击打开链接https://github.com/FlashQin/Test