标题可能说得不是很清楚
直接看下效果图:
最后一行可以是一个,两个或者三个。
思路:首先外面是一个LinearLayout,竖属性,然后往里面添加LinearLayout(行),横属性,再往行里面添加button即可。
这里要用到求余确定最后一行的数量以及确定加载3个的有多少行,最后一行补全多少个
求余:final int mod = count % 3;
3个的多少行:for (int i = 0; i < count - mod; i = i + 3)
参考代码如下:
private void setCityList(List<AreaFilterResult.ListBean> result) {
int count = result.size();
final int mod = count % 3;
int screenWidth = Utils.getScreenWidthPx(mContext);
int groupLayoutWidth = Math.round((screenWidth - Utils.dip2px(mContext, 64)) / 3f);
int margin = Utils.dip2px(mContext, 16);
LinearLayout.LayoutParams btnParams = new LinearLayout.LayoutParams(groupLayoutWidth, Utils.dip2px(mContext, 40));
btnParams.gravity = Gravity.CENTER;
LinearLayout.LayoutParams btnRightParams = new LinearLayout.LayoutParams(groupLayoutWidth, Utils.dip2px(mContext, 40));
btnRightParams.rightMargin = margin;
//加载前几行
for (int i = 0; i < count - mod; i = i + 3) {
Button button1 = new Button(mContext);
button1.setText(result.get(i).getConfig());
button1.setTag(result.get(i).getConfig());
Button button2 = new Button(mContext);
button2.setText(result.get(i + 1).getConfig());
button2.setTag(result.get(i + 1).getConfig());
Button button3 = new Button(mContext);
button3.setText(result.get(i + 2).getConfig());
button3.setTag(result.get(i + 2).getConfig());
LinearLayout itemLinear = new LinearLayout(mContext);
itemLinear.setOrientation(LinearLayout.HORIZONTAL);
LinearLayout.LayoutParams itemLinearParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT);
itemLinearParams.bottomMargin = margin;
itemLinear.setLayoutParams(itemLinearParams);
button1.setLayoutParams(btnRightParams);
button2.setLayoutParams(btnRightParams);
button3.setLayoutParams(btnParams);
button1.setTextSize(14);
button2.setTextSize(14);
button3.setTextSize(14);
button1.setBackgroundResource(R.drawable.area_filtrate_btn_bg);
button2.setBackgroundResource(R.drawable.area_filtrate_btn_bg);
button3.setBackgroundResource(R.drawable.area_filtrate_btn_bg);
itemLinear.addView(button1);
itemLinear.addView(button2);
itemLinear.addView(button3);
ll_recommend_city.addView(itemLinear);
}
//最后一行
LinearLayout itemLinear = new LinearLayout(mContext);
itemLinear.setOrientation(LinearLayout.HORIZONTAL);
itemLinear.setGravity(Gravity.CENTER);
for (int i = count - mod; i < count; ++i) {
Button button1 = new Button(mContext);
button1.setText(result.get(i).getConfig());
button1.setTag(result.get(i).getConfig());
button1.setLayoutParams(btnRightParams);
button1.setTextSize(14);
button1.setBackgroundResource(R.drawable.area_filtrate_btn_bg);
itemLinear.addView(button1);
}
//采用补全4个icon方式居中
switch (mod) {
case 1:
for (int i = 0; i < 2; i++) {
if (i == 1) {
Button button = new Button(mContext);
button.setLayoutParams(btnParams);
button.setVisibility(View.INVISIBLE);
button.setBackgroundResource(R.drawable.area_filtrate_btn_bg);
itemLinear.addView(button);
} else {
Button button = new Button(mContext);
button.setLayoutParams(btnRightParams);
button.setVisibility(View.INVISIBLE);
button.setBackgroundResource(R.drawable.area_filtrate_btn_bg);
itemLinear.addView(button);
}
}
break;
case 2:
Button button = new Button(mContext);
button.setLayoutParams(btnParams);
button.setVisibility(View.INVISIBLE);
button.setBackgroundResource(R.drawable.area_filtrate_btn_bg);
itemLinear.addView(button);
break;
}
ll_recommend_city.addView(itemLinear);
}
用到的场合还蛮多的。
有问题请加QQ:893151960