在Android按钮中使用带有效果的图像

Dar*_*der 7 layout android button

(现在我在StackOverflow上遇到了相关的问题但不幸的是没有一个解决方案对我有用,这就是为什么我不得不单独问这个问题)

我是Android的新手.问题:我需要一个充当按钮的图像.现在我明白这可以通过在标准按钮上使用图像或使用称为"ImageButton"的东西来实现(我猜这是强烈推荐的,尽管我不知道为什么).

要求:我需要详细的指导来解决这个问题.具体来说,在我遇到两个主要问题之前,我认为"把图像放在标准按钮上"更容易:我无法在中心设置图像(感谢drawable-top,bottom,left6,right)和一次我更改了背景颜色以匹配活动屏幕的背景颜色,按钮效果消失.简单地说,我需要一种简单方便的方法,让图像充当按钮或按钮,图像具有三种效果:聚焦,按下和默认.我使用ImageButton,但后来我不知道如何制作自定义形状或9patch图像以给它所有想要的效果,我对android提供的默认按钮非常满意.

有人可以帮我解决这个问题吗?我需要UI看起来不错,因此,需要对我的图像/按钮相应的效果.提前致谢 :)

这是我的图标图片: 在此输入图像描述

我希望在此周围有某种悬停效果,表示图像已被按下,就像任何普通按钮一样.

Sam*_*Rad 17

使用ImageButtonStateList Drawable.您需要选择器用于不同按钮的状态.您可以为不同的状态指定不同的drawable来模仿onFocus onPressed 影响普通按钮.

这是selector.xml在以下drawable文件夹中res:

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" 
      android:drawable="@color/cyan"/> <!-- pressed state -->
<item android:state_focused="true" 
      android:drawable="@color/cyan"/> <!-- focused state -->
<item android:drawable="@android:color/transparent"/> <!-- default state -->

</selector>
Run Code Online (Sandbox Code Playgroud)

这是color.xml在以下values文件夹中res:

<?xml version="1.0" encoding="utf-8"?>
<resources>
        <color name="cyan">#33B5E5</color>
</resources>
Run Code Online (Sandbox Code Playgroud)

ImageButton's 设置src为您的图像并将其设置backgroundselector.xml.

这是最终结果:

之前 后

这里有一个很好的教程:Android ImageButton Selector示例