首页 > 解决方案 > Android - 根据按钮按下/未按下状态更改 textSize

问题描述

我有一个按钮背景,如果状态被按下,它会改变drawable。我可以像下面这样更改文本颜色和背景,但我想更改文本大小。我该怎么做 .XML 方面?

可绘制/button_selector.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/toggle_pressed" android:state_selected="true" />
<item android:drawable="@drawable/toggle_pressed" android:state_pressed="true" />
<item android:drawable="@drawable/toggle_unpressed" />
</selector>

资源/颜色/src_text:

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

按钮:

<Button
            android:id="@+id/playButton"
            android:layout_width="200dp"
            android:layout_height="70dp"
            android:background="@drawable/button_selector"
            android:onClick="@{(v)->mainViewModel.playButtonClick(v)}"
            android:paddingStart="20dp"
            android:paddingEnd="20dp"
            android:text="@string/play"
            android:textColor="@color/src_text"
            android:textSize="40sp"
            android:visibility="@{mainViewModel.observableVisibilityPlayButton ? v.VISIBLE : v.GONE}"/>

标签: android

解决方案


您可以创建 Button 的子类并覆盖 onTouch 方法

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        switch(event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                // button pressed, change textSize
                return true;
            case MotionEvent.ACTION_UP:
                // button released, revert textSize
                return true;
        }
        return false;
    }

推荐阅读