以前は 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 がキャンバスの高さを変更する場所がわかりません。