如何在Kotlin中设置文本内容自定义TextView

时间:2019-08-05 04:52:43

标签: android kotlin textview

我只是在Kotlin中创建了名为MyTextView和XML布局的自定义TextView。

var array = [{"month": 1, "days": 31},{"month": 2, "days": 2},{"month": 3, "days": 21}];
for(var i of array){if(i.month === 1){i.days = 12}}
console.log(array)

 class MyTextView : TextView 
{
 constructor(context: Context) : super(context)
 {
     init()
 }

 constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
 {
     init()
 }

 constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
 {
     init()
 }

 private fun init()
 {
     this.paintFlags = this.paintFlags or Paint.UNDERLINE_TEXT_FLAG
 }
}

但是当我尝试设置如下文本

<com.mypackage.MyTextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/mytextview"
/>

说,未解决的参考。该怎么办?

它适用于普通的TextView。

4 个答案:

答案 0 :(得分:2)

请先导入布局文件

import kotlinx.android.synthetic.main.layout_name.mytextview

您需要将文本设置为textview的可编辑实例

请尝试一下Kotlin

mytextview.text = Editable.Factory.getInstance().newEditable("hi")

答案 1 :(得分:1)

可能是您没有在布局中引用自定义TextView的程序包名称,而活动充气工具也不知道在哪里可以找到该视图(您的自定义TextView)。确保您在布局中引用了程序包名称,如下所示:

<your.package.name.MyCustomTextView />

并确保设置了id属性

<your.package.name.MyCustomTextView android:id="@+id/mytextview" />

答案 2 :(得分:0)

尝试此代码

val textView: TextView = findViewById(R.id.android_text) as TextView
textView.setOnClickListener {
textView.text = getString(R.string.name)
}

答案 3 :(得分:0)

尝试一下:

<group 1>

之后,您可以像java这样尝试:

var mytextview = findViewById(R.id.mytextview) as TextView

希望对您有帮助!