0

我曾经认为 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在哪里改变画布的高度。

4

1 回答 1

0

好吧,我的问题是错误的。我阅读的源代码是 android 2.2,我在 android 4.1 设备上运行它。

我使用显示器运行 android 2.2,画布的高度从未改变。

于 2013-06-17T03:07:21.633 回答