Android平板横屏上的DrawerLayout
2017-06-27 16:53
162 查看
Android平板横屏展示的DrawerLayout
这个app是一直横屏展示的,之后有一个DrawerLayout,我直接使用官方的DrawerLayout,我设置drawerLayout的高度match-parent,指定宽度320dp,但很不幸,运行到平板上就崩溃了,DrawerLayout一直提示这个错误:
DrawerLayout must be measured with MeasureSpec.EXACTLY.。我查看源码发现这个错误是在drawerLayout的onMeasure中抛出的。
@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int widthMode = MeasureSpec.getMode(widthMeasureSpec); int heightMode = MeasureSpec.getMode(heightMeasureSpec); int widthSize = MeasureSpec.getSize(widthMeasureSpec); int heightSize = MeasureSpec.getSize(heightMeasureSpec); if (widthMode != MeasureSpec.EXACTLY || heightMode != MeasureSpec.EXACTLY) { if (isInEditMode()) { // Don't crash the layout editor. Consume all of the space if specified // or pick a magic number from thin air otherwise. // TODO Better communication with tools of this bogus state. // It will crash on a real device. if (widthMode == MeasureSpec.AT_MOST) { widthMode = MeasureSpec.EXACTLY; } else if (widthMode == MeasureSpec.UNSPECIFIED) { widthMode = MeasureSpec.EXACTLY; widthSize = 300; } if (heightMode == MeasureSpec.AT_MOST) { heightMode = MeasureSpec.EXACTLY; } else if (heightMode == MeasureSpec.UNSPECIFIED) { heightMode = MeasureSpec.EXACTLY; heightSize = 300; } } else { throw new IllegalArgumentException( "DrawerLayout must be measured with MeasureSpec.EXACTLY."); } }
之后在翻墙找到答案,需要我们重写DrawerLayout的onMeasure方法
public class CustomDrawerLayout extends DrawerLayout { public CustomDrawerLayout(Context context) { super(context); } public CustomDrawerLayout(Context context, AttributeSet attrs) { super(context, attrs); } public CustomDrawerLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { widthMeasureSpec = MeasureSpec.makeMeasureSpec( MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.EXACTLY); heightMeasureSpec = MeasureSpec.makeMeasureSpec( MeasureSpec.getSize(heightMeasureSpec), MeasureSpec.EXACTLY); super.onMeasure(widthMeasureSpec, heightMeasureSpec); } }
drawerlayout比较详细的文章:android官方侧滑菜单DrawerLayout详解
记录一下用到的一个垂直滑动的ViewPager
垂直滑动ViewPager
如果你的平板模拟器,无法上网,请参考这个博客,设置你的dns,之后重启模拟器,就可以上网了。
使用空格布局,请不要直接在布局中使用空格,使用编号,这样可以处理全角、半角等空格,而且不会被合并,全角空格占一个中文字符,半角空格占半个中文字符。
代表一个全角空格,
代表一个半角空格。
可参考文章android空格对齐
今天就记这些吧!
相关文章推荐
- 思科首发Android商业平板电脑 简化移动协作
- 传戴尔明年推Android平板电脑
- 入手Android平板体验
- 入手Android平板体验
- 入手Android平板体验
- 入手Android平板体验
- 入手Android平板体验
- 入手Android平板体验
- 入手Android平板体验
- android 实现横屏的方法
- Android横屏竖屏切换的问题
- 入手Android平板体验
- 入手Android平板体验
- 摩托罗拉或2011年推出史上最牛android平板
- android 实现横屏的方法
- Android将成平板电脑首选操作系统
- android中禁止横屏和竖屏切换
- 入手Android平板体验
- 入手Android平板体验
- 入手Android平板体验