代码:自定义MyViewGroup类
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
public class MyViewGroup extends ViewGroup {
private final static int VIEW_MARGIN = 100;
private int lengthX;
private int lengthY;
private ScrollListenerInfer listener;
public MyViewGroup(Context context) {
super(context);
}
public void onListener(ScrollListenerInfer l) {
this.listener = l;
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
for (int index = 0; index < getChildCount(); index++) {
final View child = getChildAt(index);
/**
* measure MeasureSpec.EXACTLY:精确的尺寸 MeasureSpec.AT_MOST:最大可获得的空间
* MeasureSpec.UNSPECIFIED:对于控件尺寸来说,没有任何参考意义
*/
child.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
// int row = 0;// 行数
int line = 0;// 列数
lengthX = left;
lengthY = top;
for (int i = 0; i < getChildCount(); i++) {
final View child = this.getChildAt(i);
int width = child.getMeasuredWidth();
int height = child.getMeasuredHeight();
/**
* 自动换列
*/
lengthX = line * (width + VIEW_MARGIN) + VIEW_MARGIN + width + left;
lengthY += height + VIEW_MARGIN;
if (lengthY > bottom) {
line++;
lengthX = line * (width + VIEW_MARGIN) + VIEW_MARGIN + width
+ left;
lengthY = height + VIEW_MARGIN + top;
}
/**
* 自动换行
*/
// lengthX += width + VIEW_MARGIN;
// lengthY = row * (height + VIEW_MARGIN) + VIEW_MARGIN + height + top;
// if (lengthX > right) {
// lengthX = width + VIEW_MARGIN + left;
// row++;
// lengthY = row * (height + VIEW_MARGIN) + VIEW_MARGIN + height
// + bottom;
// }
child.layout(lengthX - width, lengthY - height, lengthX, lengthY);// 子控件的总宽度、高度
}
listener.onLoad(lengthX);
}
}
代码:MeetingListActivity
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import zdaap.meeting.pad.beans.MeetingBean;
import zdaap.meeting.pad.json.GetNetWorkData;
import zdaap.meeting.pad.util.NetWorkUtil;
import zdaap.meeting.pad.view.MyViewGroup;
import zdaap.meeting.pad.view.ScrollListenerInfer;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.text.TextPaint;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TableRow;
import android.widget.TextView;
import android.widget.Toast;
@SuppressLint("HandlerLeak")
public class MeetingListActivity extends BaseActivity {
private Calendar c;// 日期控件
private LinearLayout home_middle_layout;
private List<MeetingBean> meeting;
private ArrayList<String> meetingInfo;
private EditText password;
private Dialog d;// 密码对话框
@SuppressWarnings("unchecked")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.meeting_list_layout);
home_middle_layout = (LinearLayout)findViewById(R.id.home_middle_layout);
findViewById(R.id.home_