我曾经认为 Canvas.clipRect() 方法可以改变画布的高度,但事实并非如此。
Log.i(TAG, "getWidth:" + canvas.getWidth()); //getHeight: 914
boolean result = canvas.clipRect(200, 200, 400, 400);
Log.i(TAG, "getHeight:" + canvas.getHeight()); //getHeight: 914
但是 LinearLayout 中的 TextView 可以做到这一点。
<com.example.test.MyLinearLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black"
android:orientation="vertical" >
<com.example.test.MyTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="test" />
</com.example.testdatepicker.MyLinearLayout>
我的线性布局:
protected void dispatchDraw(Canvas canvas) {
Log.i(TAG, "getHeight:" + canvas.getHeight()); //getHeight: 914
super.dispatchDraw(canvas);
}
我的文本视图:
protected void draw(Canvas canvas) {
Log.i(TAG, "getHeight:" + canvas.getHeight()); //getHeight: 38
super.draw(canvas);
}
在我阅读 ViewGroup.dispatchDraw() 方法后,我找不到android在哪里改变画布的高度。