通过单击按钮在画布上绘制文本

时间:2019-03-20 11:57:13

标签: android android-canvas android-custom-view

我有这个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)
        }

因此它不起作用。如何解决此问题?

0 个答案:

没有答案