Kotlin:如何使用Kotlin在Android中为TextView设置文本?

时间:2017-05-21 12:26:42

标签: android textview kotlin

我是新手。

  

我想在点击它时更改TextView的文字。

我的代码:

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

输出:我获得了输出但显示使用属性访问语法

谁能告诉我怎么做?

提前致谢。

11 个答案:

答案 0 :(得分:33)

在kotlin中,不要像java中那样使用getter和setter。下面给出了kotlin的正确格式。

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

要从Textview获取值,我们必须使用此方法

 val str: String = textView.text.toString()

 println("the value is $str")

答案 1 :(得分:7)

只需添加以下行并访问直接xml对象

import kotlinx.android.synthetic.main.activity_main.*

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        txt_HelloWorld.text = "abc"
    }

根据您的XML名称替换activity_main

答案 2 :(得分:4)

从布局中查找文本视图。

val textView : TextView = findViewById(R.id.android_text) as TextView

在textview上设置onClickListener。

textview.setOnClickListener(object: View.OnClickListener {
    override fun onClick(view: View): Unit {
        // Code here.
        textView.text = getString(R.string.name)
    }
})

如果我们传递单个函数文字参数,则可以从View.setOnClickListener中省略参数括号。因此,简化的代码将是:

textview.setOnClickListener {
    // Code here.
    textView.text = getString(R.string.name)
}

答案 3 :(得分:0)

使用:

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

或者:

您可以使用@Suppress("UsePropertyAccessSyntax")为每个呼叫网站添加注释,但这很难看。

答案 4 :(得分:0)

  <TextView
        android:id="@+id/usage"
        android:layout_marginTop="220dip"
        android:layout_marginLeft="45dip"
        android:layout_marginRight="15dip"
        android:typeface="serif"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Google "
        android:textColor="#030900"/>


usage.text="hello world"

答案 5 :(得分:0)

import kotlinx.android.synthetic.main.MainActivity.*

class Mainactivity : AppCompatActivity() {


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.MainActivity)

        txt.setText("hello Kotlin")

    }

}

答案 6 :(得分:0)

val text: TextView = findViewById<TextView>(R.id.text_id) as TextView

答案 7 :(得分:0)

findViewById(R.id.android_text)不需要强制转换。

答案 8 :(得分:0)

是的,但是晚了-但可能会帮助参考的人

带有 EditText 按钮 TextView

xml 按钮上的

onClick 会将值从 EditText 更新为 TextView

        <EditText
            android:id="@+id/et_id"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <Button
            android:id="@+id/btn_submit_id"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <TextView
            android:id="@+id/txt_id"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

看看代码在您的课堂上做些什么

不需要像Java中那样初始化组件的ID。您可以通过他们的xml ID来实现

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_sample)

        btn_submit_id.setOnClickListener {
            txt_id.setText(et_id.text);
        }
    }

答案 9 :(得分:0)

在Kotlin中设置文本

textview.text = "write here"

答案 10 :(得分:-1)

顶部帖子的末尾附加了“as TextView”。如果将其保留,可能会出现其他编译器错误。以下应该没问题。

val text: TextView = findViewById(R.id.android_text) as TextView

其中'android_text'是textView的ID