Android 使自定义视图大小适应内部画布
我有一个自定义视图,其中包含一个简单的画布(矩形) 我想根据画布的宽度和高度调整此自定义视图的宽度和高度 因为当使用Android 使自定义视图大小适应内部画布,android,android-canvas,android-custom-view,Android,Android Canvas,Android Custom View,我有一个自定义视图,其中包含一个简单的画布(矩形) 我想根据画布的宽度和高度调整此自定义视图的宽度和高度 因为当使用wrap\u content时,自定义视图会填满所有屏幕空间 多谢各位 布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match
wrap\u content
时,自定义视图会填满所有屏幕空间
多谢各位
布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<com.dev.ui.RectangleView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
我知道这个问题已经在评论中得到了回答。但我只是想澄清一下 问题指出: 我想调整此自定义视图的宽度和高度以适应 画布宽度和高度
CustomView的宽度和高度与onDraw的画布的宽度和高度相同
onDraw(canvas canvas)
方法中提供的canvas
与视图本身具有相同的高度和宽度。因此,当您谈论视图的大小时,您谈论的是画布的大小
现在,onMeasure()
确定视图(或画布)的大小。在此方法中通过setMeasuredDimension
设置的任何大小都将是视图的大小。您需要覆盖onMeasure方法并将setMeasuredDimension设置为所需的宽度和高度。非常好的演示@aelimil谢谢它与onMeasure:)配合得非常好。创建一个答案,以便我可以验证您的解决方案;)
public class RectangleView extends View {
Paint paint = new Paint();
public SquareLegendView(Context context) {
super(context);
}
public SquareLegendView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SquareLegendView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
paint.setColor(Color.BLACK);
canvas.drawRect(40, 40, 80, 80, paint);
//drawRect(left, top, right, bottom, paint)
}
}