我试图将片段的视图绘制到画布上以导出为图片。
我尝试遵循这个问题:Android: Draw a view on canvas 并成功地将填充的视图绘制到画布上,但是当我尝试将片段的视图绘制到画布上时,会破坏布局。
这是我的片段宿主:
这是我的片段宿主:
<FrameLayout
android:layout_width="1000px"
android:layout_height="1000px"
android:visibility="invisible"
tools:ignore="PxUsage"
android:id="@+id/fragment_host"/>
这是我在画布上绘图的方法
supportFragmentManager.beginTransaction()
.replace(R.id.fragment_host, MyTrackViewerFragment().apply {
onCreateControls = {
bitmap = Bitmap.createBitmap(1000, 1000, Bitmap.Config.ARGB_8888)
val canvas = Canvas(bitmap)
it.apply {
layoutParams = LinearLayout.LayoutParams(1000, 1000)
measure(measuredWidth, measuredHeight)
layout(0, 0, 1000, 1000)
draw(canvas)
}
findViewById<ImageView>(R.id.preview).setImageBitmap(bitmap)
ImageView.ScaleType.CENTER_CROP
supportFragmentManager.beginTransaction().remove(this).commit()
}
})
.commit()
这是结果(黑色正方形为预览图像视图):
片段在片段主机中绘制正确,而且在调用测量和布局方法之后也是如此。
另一个片段给出类似的结果(正方形是预览图像视图):
我错过了什么?
编辑:似乎layout(0, 0, 1000, 1000)
会搞乱布局,但我找不到原因。