繼承View,實現自己想要的組件,那麼需要使用到setMeasuredDimension這個方法,這個方法決定了當前View的大小,請看代碼:
View的代碼: Java代碼 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代碼 <?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不會有作用。