首页 > 解决方案 > TextView 在旧文本之上覆盖新文本,而不是替换它。(科特林 - 安卓)

问题描述

我有一个 textView 可以正确地做到这一点:

<TextView
            android:id="@+id/tvAbove"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="LIMBER UP"
            android:textColor="@color/colorAccent"
            android:textSize="22sp"
            android:textStyle="bold"/>

截屏

但是在我的代码中,我想将文本更改为新的内容,如下所示:

tvAbove.text = "HELLO453"

新文本只是覆盖它,而不是删除和替换。

在此处输入图像描述

请帮助我获得正常行为。提前非常感谢。

这是为那些问过的人准备的课程:

 class ExerciseActivity : AppCompatActivity() {

    private var restTimer: CountDownTimer?= null
    private var exerciseTimer: CountDownTimer?= null
    private var restProgress = 0
    private var exerciseProgress = 0


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

        //toolbar acts as action bar
        setSupportActionBar(toolbar_exercise_activity)
        val actionbar = supportActionBar
        if(actionbar != null){
            actionbar.setDisplayHomeAsUpEnabled(true)
        }
        toolbar_exercise_activity.setNavigationOnClickListener{
            onBackPressed()
        }



        setupRestView()
    }

    private fun setRestProgressBar(){
        progressBar.progress = restProgress
        restTimer = object : CountDownTimer(10000, 1000){
            override fun onTick(millisUntilFinished: Long) {
                Log.i("onTick", "restProgress = ${restProgress.toString()}")
                restProgress++
                if(restProgress == 6){
                    tvAbove.text = ""
                    tvAbove.text = "HELLO543"
                }
                progressBar.progress = 10 - restProgress
                tvTimer.text = (10 - restProgress).toString()

                Log.i("tvTimer.text = ", tvTimer.text as String)
            }

            override fun onFinish() {
                Toast.makeText(this@ExerciseActivity, "Now start the exercise", Toast.LENGTH_SHORT).show()
            }
        }.start()
    }



    override fun onDestroy() {
        if(restTimer != null){
            restTimer!!.cancel()
            restProgress = 0

        }
        super.onDestroy()
    }
    private fun resetRestView(){
        if(restTimer != null){
            restTimer!!.cancel()
            restProgress = 0
        }
    }


    private fun setupRestView(){
        Log.i("msg", object{}.javaClass.enclosingMethod!!.name)
        resetRestView()
        setRestProgressBar()
    }
}

标签: androidkotlintextviewsettext

解决方案


这很奇怪,你能分享你的 Kotlin 课程吗?我建议的第一个解决方案是“清理”文本,然后输入你的文本:

tvAbove.text = ""
tvAbove.text = "Hello453"

推荐阅读