android - 使用 xml 按下和释放之间的不同背景颜色?

标签 android xml android-layout android-button

编辑:

为了清楚地说明我在寻找什么,这正是我想要的。

当用户按住按钮(手指仍在屏幕上)时,我希望它显示一种颜色(例如默认的 Android 半透明波纹效果),然后,根据用户是否完成点击,(如果他们抬起他们的手指放在按钮上时,Android 会将其注册为点击,如果他们将手指移出按钮的范围然后抬起手指,Android 将不会将其注册为点击)我希望它显示不同颜色。

我正在寻找使按钮执行此操作的 xml 代码。

按住时,显示默认的 Android 波纹效果(简单),如果用户完成点击,则显示绿色波纹效果以示确认。如果用户没有完成点击,用户按住按钮的涟漪应该会逐渐消失。

到目前为止,这里或其他问题上的 xml 解决方案都没有做到这一点。所以我可能不得不在 onTouchListener 中手动执行此操作。

============================================= =======================

我正在尝试为我的按钮创建一个可绘制的波纹效果状态列表,但我不知道如何使用它,以便当我的按钮被按住时,波纹是一种颜色,然后如果用户完成通过释放按钮上的手指来按下按钮,波纹是另一种颜色。

现在,按下按钮时和松开按钮时我的波纹颜色是一样的。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:enterFadeDuration="200" android:exitFadeDuration="200">
<item android:state_pressed="false">
    <shape android:shape="oval">
        <solid android:color="@android:color/transparent" />
    </shape>
</item>

<item android:state_pressed="true">
    <shape android:shape="oval">
        <solid android:color="@color/md_teal_500" />
    </shape>
</item>
</selector>

有什么方法可以使用状态列表可绘制 xml 来执行此操作,还是我必须使用触摸监听器手动执行此操作?

最佳答案

在 drawable 文件夹中创建以下 xml 文件。 按钮规范.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <corners android:radius="2dp" />
    <solid
        android:width="2px"
        android:color="@color/green" />
</shape>

按钮选择.xml:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <corners android:radius="2dp" />
    <solid
        android:width="5px"
        android:color="@color/red" />
</shape>

按钮点击效果.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/buttonselected" android:state_pressed="true" /><!-- pressed -->
    <item android:drawable="@drawable/buttonnorml" /> <!-- default -->
</selector>

用作按钮的背景:

<Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/buttonclickeffect"
        android:text="sample" />

关于android - 使用 xml 按下和释放之间的不同背景颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41129855/

相关文章:

java - 我怎样才能在java中获得这个日期时间格式

xml - 默认命名空间未正确转换

php - 从服务器上的数据库加载列表中的图像

android openOrCreateDatabase 仅适用于模拟器

android - 我应该在哪里写一个临时文件?

java - Paint.setTextSize() 的参数代表什么?

android - 如何在 android 中按住和拖动(重新定位)布局及其关联的布局

android - 如何解决约束布局内与其他 subview 重叠的可扩展 ListView 滚动问题?

java - 在我的 Spring 应用程序中配置 hibernate 的问题

android - 如何使用UI Pencil “*.ep/*.epz files”创建Android Layout