我有这个layout。
我希望通过单击添加按钮在画布上绘制文本 XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">
<Button
android:id="@+id/addText"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="addText"/>
<com.example.sg772.textonimage.CustomView
android:id="@+id/customView"
android:layout_width="match_parent"
android:layout_height="150dp"/>
</LinearLayout>
自定义视图(当我只声明color时,它可以正常工作):
override fun onDraw(canvas: Canvas?) {
canvas?.drawColor(Color.CYAN)
}
现在,我在“自定义视图”类中创建函数以绘制文本
fun swapCollor(canvas: Canvas?){
mPaintSq.color=Color.RED
mPaintSq.textSize=80F
canvas?.drawText("ok",150F, 150F, mPaintSq)
postInvalidate()
}
MainActivity中的代码
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
canvas= Canvas()
custView=findViewById(R.id.customView)
addText=findViewById(R.id.addText)
addText.setOnClickListener {
custView.swapCollor(canvas)
}
因此它不起作用。如何解决此问题?