`

Android View中的setMeasuredDimension方法

阅读更多

继承View,实现自己想要的组件,那么需要使用到setMeasuredDimension这个方法,这个方法决定了当前View的大小,请看代码:

View的代码:

package cc.mdev.test;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.text.TextPaint;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;

public class MyScrollView extends View {

public MyScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}

public MyScrollView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
TextPaint paint = new TextPaint();
paint.setAntiAlias(true);
canvas.drawColor(Color.GRAY);
for (int i = 10; i < 500; i++) {
canvas.drawText("This is the scroll text.", 10, i, paint);
i = i+15;
}
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
String tag="onMeasure";
Log.e(tag, "Scroll View on measure...");
setMeasuredDimension(200, 800);
}

@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
String tag = "onScrollChanged";
Log.e(tag, "Scroll....");
super.onScrollChanged(l, t, oldl, oldt);
}
}
 




布局文件:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#fff" > <Button android:text="Button01" android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> <ScrollView android:layout_width="fill_parent" android:layout_height="fill_parent"> <cc.mdev.test.MyScrollView android:layout_width="wrap_content" android:layout_height="wrap_content"/> </ScrollView> </LinearLayout> 
 



效果就是自定义视图的大小为
200, 800,并且放入到ScrollView中,ScrollView会启作用,如果不使用setMeasuredDimension这个方法,那么
ScrollView不会有作用。

 

分享到:
评论

相关推荐

    Android View.onMeasure方法详解及实例

    Android View.onMeasure方法详解及实例 View在屏幕上显示出来要先经过measure(计算)和layout(布局). 1、什么时候调用onMeasure方法? 当控件的父元素正要放置该控件时调用.父元素会问子控件一个问题,“你想...

    Android 重写ViewGroup 分析onMeasure()和onLayout()方法

    void android.view.View.setMeasuredDimension(int measuredWidth, int measuredHeight) 在onMeasure(int, int)中,必须调用setMeasuredDimension(int width, int height)来存储测量得到的宽度和高度

    Android酷炫转动菜单

    import android.view.View; import android.view.ViewConfiguration; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import ...

    Android自定义实现可滑动按钮

    2.在 onMeasure() 中需要调用setMeasuredDimension(viewWidth,viewheight),用来绘制按钮的位置区域 3.需要加载按钮的背景和滑块资源 并且转化为bitmap对象 4.获取背景图片的宽和高作为自定义控件的宽和高 5.获取滑块...

    应用启动页自定义跳转计时器View Demo

    应用启动页自定义跳转计时器View Demo: CircleTextProgressbar.java: package com.demo.startpageskiptimerdemo.widget; import android.content.Context; import android.content.res.ColorStateList; import ...

    WelcomeVideoPager-仿蚂蜂窝自由行和慕课网视频欢迎页.zip

     setMeasuredDimension(View.MeasureSpec.getSize(widthMeasureSpec), View.MeasureSpec.getSize(heightMeasureSpec));  }  /**  * 播放视频  *  * @param uri 播放地址  */  public void ...

    ViewPager 放大缩小左右移动

    // glitches, we want to keep all current pages in the view // until the scroll ends. for (int i = 0; i (); i++) { mItems.get(i).scrolling = true; } } final boolean dispatchSelected...

    Android实现IM多人员组合的群组头像

    说明: 此头像类似微信群组头像,整个头像由组内前N位人员的头像组合而成,可用网络或本地图片进行组合,最终显示为一个头像整体,看效果图: 一、自定义整体头像的ViewGroup,计算并保存宽... setMeasuredDimension(m

    解析:继承ViewGroup后的子类如何重写onMeasure方法

    1.首先贴上我试验成功的代码 代码如下:protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int measureWidth = MeasureSpec.getSize... setMeasuredDimension(measureWidth, measureHeigth); //

Global site tag (gtag.js) - Google Analytics