最近使用hellocharts需要表格横向显示,而activity需要竖屏显示,在旋转以后,默认宽度为不超过屏幕宽度,则一直无法显示全控件。

此时需要修改onMeasure方法,这个方法是用来控制控件宽度的

参考文档http://blog.csdn.net/u012604322/article/details/17093421

MeasureSpec.EXACTLY:父视图希望子视图的大小应该是specSize中指定的。

MeasureSpec.AT_MOST:子视图的大小最多是specSize中指定的值,也就是说不建议子视图的大小超过specSize中给定的值。

MeasureSpec.UNSPECIFIED:我们可以随意指定视图的大小。

了解了onMeasure的工作原理,就可以手动重新设置控件宽度,超出屏幕宽度的时候也不怕啦

    /**
* 控件的高度
*/
private int mHeight;
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// super.onMeasure(widthMeasureSpec, heightMeasureSpec);
/**
* 设置宽度
*/
int specMode = MeasureSpec.getMode(widthMeasureSpec);
int specSize = MeasureSpec.getSize(widthMeasureSpec);

if (specMode == MeasureSpec.EXACTLY)// match_parent , accurate
{
mWidth
= specSize;
}
else {
// 由图片决定的宽
int desireByImg = getPaddingLeft() + getPaddingRight()
+ getWidth();
if (specMode == MeasureSpec.AT_MOST)// wrap_content
{
mWidth
= Math.min(desireByImg, specSize);
}
else

mWidth
= desireByImg;
}
/***
* 设置高度
*/

specMode
= MeasureSpec.getMode(heightMeasureSpec);
specSize
= MeasureSpec.getSize(heightMeasureSpec);

if (specMode == MeasureSpec.EXACTLY)// match_parent , accurate
{
mHeight
= specSize;
}
else {
int desire = getPaddingTop() + getPaddingBottom()
+ getHeight();

if (specMode == MeasureSpec.AT_MOST)// wrap_content
{
mHeight
= Math.min(desire, specSize);
}
else
mHeight
= desire;
}
setMeasuredDimension(mWidth, mHeight);
}

更多相关文章

  1. 安卓,如何让两个按钮相邻,宽度相同
  2. 如何在android中的recycler视图中显示第一项的选择?
  3. springMVC使用html视图配置详解
  4. 基于内容估计文本宽度的算法
  5. 自定义视图无法工作,直到我触摸屏幕
  6. jQuery(JavaScript)获取文字(字符串)宽度(显示长度)
  7. 做一个没有视图的零食吧?

随机推荐

  1. Android SDK Platforms 提取下载
  2. 如何去写 Android(安卓)init.rc
  3. android 条码识别软件开发全解析(续1详解
  4. Android 学习笔记【基础扫盲篇】
  5. Android(安卓)UI布局优化的要点
  6. android 联系人详解
  7. Android中10个成功的开源项目
  8. Android推送通知的实现--Android推送通知
  9. android模拟器无法启动问题之中文路径
  10. Android之文件读写