为了账号安全,请及时绑定邮箱和手机立即绑定

怎么使菜单栏完全覆盖页面修改哪个代码

怎么使菜单栏完全覆盖页面修改哪个代码


正在回答

2 回答

在xml里设自定义属性rightPadding = 0 dp 

0 回复 有任何疑惑可以回复我~
#1

慕仙1788428 提问者

可以具体点吗
2016-04-24 回复 有任何疑惑可以回复我~
#2

慕仙1788428 提问者

非常感谢!
2016-04-25 回复 有任何疑惑可以回复我~

public class SlidingMenu extends HorizontalScrollView

{

private LinearLayout mWapper;

private ViewGroup mMenu;

private ViewGroup mContent;

private int mScreenWidth;


private int mMenuWidth;

// dp

private int mMenuRightPadding =0;



private boolean once;


private boolean isOpen;


/**

* 未使用自定义属性时,调用

* @param context

* @param attrs

*/

public SlidingMenu(Context context, AttributeSet attrs)

{

this(context, attrs, 0);

}


/**

* 当使用了自定义属性时,会调用此构造方法

* @param context

* @param attrs

* @param defStyle

*/

public SlidingMenu(Context context, AttributeSet attrs, int defStyle)

{

super(context, attrs, defStyle);


// 获取我们定义的属性

TypedArray a = context.getTheme().obtainStyledAttributes(attrs,

R.styleable.SlidingMenu, defStyle, 0);


int n = a.getIndexCount();

for (int i = 0; i < n; i++)

{

int attr = a.getIndex(i);

switch (attr)

{

case R.styleable.SlidingMenu_rightPadding:

mMenuRightPadding = a.getDimensionPixelSize(attr,

(int) TypedValue.applyDimension(

TypedValue.COMPLEX_UNIT_DIP, 0, context

.getResources().getDisplayMetrics()));

break;

}

}

a.recycle();


WindowManager wm = (WindowManager) context

.getSystemService(Context.WINDOW_SERVICE);

DisplayMetrics outMetrics = new DisplayMetrics();

wm.getDefaultDisplay().getMetrics(outMetrics);

mScreenWidth = outMetrics.widthPixels;


}


public SlidingMenu(Context context)

{

this(context, null);

}


/**

* 设置子View的宽和高 设置自己的宽和高

*/

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)

{

if (!once)

{

mWapper = (LinearLayout) getChildAt(0);

mMenu = (ViewGroup) mWapper.getChildAt(0);

mContent = (ViewGroup) mWapper.getChildAt(1);

mMenuWidth = mMenu.getLayoutParams().width = mScreenWidth

- mMenuRightPadding;

mContent.getLayoutParams().width = mScreenWidth;

once = true;

}

super.onMeasure(widthMeasureSpec, heightMeasureSpec);

}


/**

* 通过设置偏移量,将menu隐藏

*/

@Override

protected void onLayout(boolean changed, int l, int t, int r, int b)

{

super.onLayout(changed, l, t, r, b);

if (changed)

{

this.scrollTo(mMenuWidth, 0);

}

}


@Override

public boolean onTouchEvent(MotionEvent ev)

{

int action = ev.getAction();

switch (action)

{

case MotionEvent.ACTION_UP:

// 隐藏在左边的宽度

int scrollX = getScrollX();

if (scrollX >= mMenuWidth / 2)

{

this.smoothScrollTo(mMenuWidth, 0);

isOpen = false;

} else

{

this.smoothScrollTo(0, 0);

isOpen = true;

}

return true;

}

return super.onTouchEvent(ev);

}


/**

* 打开菜单

*/

public void openMenu()

{

if (isOpen)

return;

this.smoothScrollTo(0, 0);

isOpen = true;

}


public void closeMenu()

{

if (!isOpen)

return;

this.smoothScrollTo(mMenuWidth, 0);

isOpen = false;

}


/**

* 切换菜单

*/

public void toggle()

{

if (isOpen)

{

closeMenu();

} else

{

openMenu();

}

}


}


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
QQ5.0侧滑菜单
  • 参与学习       62531    人
  • 解答问题       295    个

本教程将带领大家通过自定义控件实现QQ5.0侧滑菜单

进入课程

怎么使菜单栏完全覆盖页面修改哪个代码

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信