继承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开发中,`onMeasure()`方法是布局和视图尺寸计算的核心,它负责确定一个View的精确宽度和高度。本文将深入解析`onMeasure()`的工作原理,通过一个实例来帮助理解这一关键过程。 首先,`onMeasure()`方法在...
本篇文章将深入探讨Android中View的绘制流程以及`invalidate()`方法的工作原理。 首先,我们需要了解Android视图的生命周期,它包括测量(Measure)、布局(Layout)和绘制(Draw)三个主要阶段: 1. **测量阶段(Measure...
在Android开发中,View是构建用户界面的基本元素。利用View,开发者可以自定义各种复杂的UI组件,其中之一就是画线。本篇文章将详细讲解如何在Android的View中实现画线功能,以此来创建一个简单的画线练习作品。 ...
在Android开发中,自定义View是一项重要的技能,它允许开发者根据需求创建独特的用户界面元素,以实现更加丰富和个性化的交互体验。本实例主要讲解如何在Android中自定义View,并提供了一个可作为参考的demo。 首先...
在这个方法中,我们需要调用setMeasuredDimension()来设置最终的尺寸,确保视图在不同屏幕尺寸下都能正确显示。 在实际开发中,我们可能会遇到性能优化的问题。自定义View的绘制和触摸事件处理都可能影响到应用的...
在Android开发中,自定义View是一项重要的技能,它允许开发者创造出独特且富有创新性的用户界面。本文将深入探讨“Android-Android自定义View有这些足够了”这一主题,旨在帮助你掌握自定义Android View的核心技术,...
在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特且功能丰富的UI组件。本示例着重讲解如何实现一个流式布局,这在处理动态数据或者需要灵活展示元素时非常有用,例如在创建网格视图...
在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建具有独特功能和视觉效果的组件。Drawable在Android中是图形和背景资源的一种表现形式,它广泛用于按钮、列表项、自定义视图等。本篇将...
这个方法需要调用`setMeasuredDimension()`来设置测量结果,确保View在布局中能正确显示。 4. **触摸事件处理**:如果你的自定义View需要响应用户的触摸操作,可以重写`onTouchEvent()`方法。在这里,你可以处理...
在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特且功能丰富的UI组件。这个“android demo”就是一个很好的例子,它展示了一个自定义View,用于显示正在加载的状态,同时伴有动态...
在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求定制界面元素,以实现独特的用户体验。本文将深入探讨在Android中自定义View的基本步骤和关键知识点,结合提供的"BottomTabLine"示例代码...
2. **尺寸与位置**:在Android中,View的尺寸由宽度和高度表示,可以通过setMeasuredDimension()方法设置。测量过程通常在onMeasure()中完成,遵循MeasureSpec规则。位置由left、top、right和bottom四个属性定义,...
Android自定义View绘制的方法及过程是Android开发中非常重要的一部分,本文将详细介绍Android自定义View绘制的方法及过程,包括onSizeChanged、onDraw、onMeasure顺序的解释。 在Android中,自定义View的绘制过程...
`onMeasure()`方法用于确定View的大小,通常应调用`setMeasuredDimension()`设置测量宽度和高度。 6. **动画效果** Android提供了多种动画效果,包括属性动画(Property Animation)、视图动画(View Animation)...
在Android开发中,自定义View是一项重要的技能,它允许开发者根据需求创建独特的用户界面组件。本文将以自定义滑动按钮为例,深入解析Android自定义View的绘制过程。 首先,了解View和ViewGroup的关系至关重要。...
Android View.onMeasure方法详解及实例 View在屏幕上显示出来要先经过measure(计算)和layout(布局). 1、什么时候调用onMeasure方法? 当控件的父元素正要放置该控件时调用.父元素会问子控件一个问题,“你想...
这篇文档主要介绍了Android系统中View的绘图流程,包括measure、layout和draw三个关键步骤,以及ViewGroup作为视图容器如何管理子视图的测量、布局和绘制。 1. **measure操作**:measure过程用于计算视图的尺寸,...
- `onMeasure()`方法用于计算View的尺寸,必须调用`setMeasuredDimension()`设置测量结果。 2. **绘制基础**: - 使用`Canvas`对象进行绘制,包括画线`drawLine()`, 画圆`drawCircle()`, 画矩形`drawRect()`等...
3. `setMeasuredDimension(int widthMeasureSpec, int heightMeasureSpec)`:这个方法在测量阶段被调用,用于设定View的期望尺寸。通常在自定义View时,你需要重写这个方法来确定View的大小。 4. `requestLayout()`...