按下时如何更改TextView背景颜色?

我尝试更改TextView1的按下背景。这是我在drawable文件夹中的text.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@android:color/white" />
    <item android:drawable="@android:color/black"/>
</selector>

这是我的Kotlin文件:

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

        var textview1 = findViewById(R.id.TextView1) as TextView

        textview1.setOnClicklistener{
            val t = TextView(this)
            t.setBackgroundResource(R.drawable.text)
        }
    }

我是根据以下答案回答的:Programatically make TextView background color change while pressed

TextView1:

<TextView
        android:id="@+id/TextView1"
        android:layout_width="50dp"
        android:layout_height="50dp"/>

有人知道我在想什么吗?我是乞gg。


对不起,这是我在代码中的错误。正确的代码是:

 var textview1 = findViewById(R.id.TextView1) as TextView

        textview1.setOnClicklistener {
            //val t = TextView(this)
            textview1.setBackgroundResource(R.drawable.text)
guyueningxiang 回答:按下时如何更改TextView背景颜色?

您需要在onClick事件之前而不是之后在textview上设置背景。现在,在处理完点击事件之后,该颜色将应用于新的Textview(t)。该Textview不是屏幕上显示的视图(textview1

使用以下之一:

<TextView
        android:id="@+id/TextView1"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:background="@drawable/text"/>

textview1.setBackgroundResource(R.drawable.text)
textview1.setOnClickListener{
             //Handle click
        }

此外,如果您将代码更改为:

textview1.setOnClickListener{
            textview1.setBackgroundResource(R.drawable.text)
        }

您会注意到,在第一次点击后 确实应用了状态列表

,

仅当您希望对点击动画产生波纹效果时使用

android:background="?android:attr/selectableItemBackground"
,

尽管如上所述,您可以通过编程方式执行此操作,但正确而简单的方法是转到styles文件并为TextView添加自定义样式,该样式中您可以根据不同的状态并控制TextView必须提供的所有内容,然后转到您的.xml文件并添加style属性并加载您刚刚创建的样式,这很容易并且可以重复使用整个应用上,而不是每次需要执行类似操作时都复制粘贴所有代码。

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

        var textview1 = findViewById(R.id.TextView1) as TextView

        textview1.setOnClickListener{
            val t = TextView(this)
            t.setBackground(R.drawable.text)
        }
    }
本文链接:https://www.f2er.com/3139975.html

大家都在问