我想创建ImageButton的图像上有两种状态 - 正常和按下。各国使用相同的图像,但在按下状态下它更轻。没有两个图像,是否可以仅使用XML?使用一个图像为不同的按钮状态
回答
我发现,我感到满意的解决方案:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/my_image" android:state_pressed="false"/>
<item android:drawable="@drawable/my_image_pressed" android:state_pressed="true"/>
</selector>
在按钮的背景,我把这个绘制,其中从资源my_image
图像和my_image_pressed
下一个绘制:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<bitmap android:src="@drawable/my_image" />
</item>
<item>
<color android:color="#5FEC" />
</item>
</layer-list>
但为什么你不想使用两个不同的图像?
如果我有许多按钮然后图像将有很大的重量。 – anber 2012-07-12 12:40:57
您不能在按钮中使用图像和颜色的组合。 – Chakravyooh 2012-07-12 12:45:17
您可以通过制作9-Patch图像来缩小按钮图像的文件大小。此外,你真的应该有5个按钮状态(正常,集中,按下,disabled_focused,和禁用),所以你可以咬紧牙关,并期望拥有大量的资源。我会尽可能缩小它们,并根据您的设计限制,查看是否可以合并所需的不同按钮数量。 – Karakuri 2012-07-12 15:41:14
这样做:在创建文件夹绘制的XML文件名为selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- When selected, use grey -->
<item android:drawable="@drawable/lighter_image"
android:state_pressed="true" />
<!-- When not selected, use white-->
<item android:drawable="@drawable/original_image"/>
</selector>
在ImageButton的设定背景为这个XML:
android:background="@drawable/selector"
您可以将ColorFilter到ImageButton的在onDraw有图像当状态被按下时。当它没有按下时清除它。
filter = new PorterDuffColorFilter(0x7FFFFFFF, PorterDuff.Mode.SRC_ATOP);
@Override
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
if (isPressed())
{
getDrawable().setColorFilter(filter);
}
else
{
getDrawable().clearColorFilter();
}
}
有趣的,会尝试。 – 2012-10-11 19:17:49
- 1. 如何设置图像按钮backgroundimage为不同的状态?
- 2. 一个图像的不同状态
- 3. 作为一个按钮但没有按钮图像的图像
- 4. 在windows phone中为切换按钮创建不同的图像状态
- 5. 为我的PNG图像按钮创建禁用状态
- 6. 按钮在一个活动中的不同布局状态?
- 7. 更改自定义按钮的状态(带图像的按钮)?
- 8. 如何使用xml设置图像按钮的选定状态
- 9. 全球按钮的动态风格与每个按钮不同的图像
- 10. 作为一个按钮的图像
- 11. 使用不同悬停状态的按钮资源
- 12. Facebook像不同图像的按钮
- 13. Silverlight按钮切换按钮时背景图像更改状态
- 14. 更改一个按钮的状态HTML
- 15. 在Xcode中,如何使一个按钮在一个UIImageView中将图像更改为不同的图像?
- 16. 更改不同状态下的按钮图像的色调颜色
- 17. 在Windows Phone的Expression Blend中,更改不同状态下按钮的图像源
- 18. 如何给每个按钮一个不同的图像?
- 19. 得到不同的按钮高度为同一个按钮
- 20. 自定义按钮与每个状态的图像
- 21. HTML使用按钮作为'单选按钮',并在按下时应用不同的状态
- 22. 用同一个按钮的多个实例更改特定按钮的图像
- 23. Android Widget(AppWidgetProvider)>'两个状态'按钮就像一个切换按钮..和WindowManager
- 24. 添加一个不同的图像作为一个按钮,使用HTML上的CSS和文本的每个LI
- 25. 分配高亮状态图像到Android图像按钮
- 26. WPF按钮不同的图像为一种风格
- 27. 双态按钮:显示当前状态或下一个状态?
- 28. 如何将按钮/图像onclick更改为活动状态?
- 29. 控制一个ImageControl状态的按钮状态
- 30. 如何为单个按钮显示不同的图像?
不是一个理想的解决方案。这将取决于您的图像的大小。如果它是圆角的,那么这个解决方案看起来很糟糕。 – 2012-10-11 19:17:13
感谢哥们我得到了关于按钮选择器上的单个图像设置的这个解决方案:) – 2014-08-25 11:47:48