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);
}

MyTextView:

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 に答える