package com.sogouchat.ui; import com.sogouchat.util.LayoutUtil; import android.content.Context; import android.util.AttributeSet; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; public class SlidingMenu extends ViewGroup { private FrameLayout mContainer; private final int MENU_WIDTH = LayoutUtil.dip2px(this.getContext(),200); public SlidingMenu(Context context) { super(context); init(); } public SlidingMenu(Context context, AttributeSet attrs) { super(context, attrs); init(); } public SlidingMenu(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(); } // @Override // protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // super.onMeasure(widthMeasureSpec, heightMeasureSpec); // mContainer.measure(widthMeasureSpec, heightMeasureSpec); // Log.e("ad", "widthMeasureSpec----------------" + widthMeasureSpec); // Log.e("ad", "heightMeasureSpec----------------" + heightMeasureSpec); // } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int width = getDefaultSize(0, widthMeasureSpec); int height = getDefaultSize(0, heightMeasureSpec); setMeasuredDimension(width, height); final int contentHeight = getChildMeasureSpec(heightMeasureSpec, 0, height); final int menuWidth = getChildMeasureSpec(widthMeasureSpec, 0, mContainer.getWidth()); // Log.e("ad", "menuWidth----------------" + menuWidth); // Log.e("ad", "contentHeight----------------" + contentHeight); mContainer.measure(menuWidth, contentHeight); } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { final int width = r - l; final int height = b - t; mContainer.layout(0, 0, MENU_WIDTH, height); } private void init() { mContainer = new FrameLayout(getContext()); super.addView(mContainer); } public void setView(View v) { if (mContainer.getChildCount() > 0) { mContainer.removeAllViews(); } mContainer.addView(v); } @Override protected void onFinishInflate() { // TODO Auto-generated method stub super.onFinishInflate(); View child; for (int i = 0; i < getChildCount(); i++) { child = getChildAt(i); child.setFocusable(true); child.setClickable(true); } } }