如何拥有透明的ImageButton:Android

Nam*_*tha 472 android transparent imagebutton surfaceview

<ImageButton android:id="@+id/previous"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/media_skip_backward"
android:background="@drawable/transparent"></ImageButton>
Run Code Online (Sandbox Code Playgroud)

这就是我试图获得透明的ImageButton以便将这些按钮放在SurfaceView上.但是,只要我在xml中包含透明线,Eclipse就会在项目中出现错误.

请帮忙.

Qui*_*son 957

尝试使用null作为背景...

android:background="@null"
Run Code Online (Sandbox Code Playgroud)

  • 使用空背景是不正确的!! Android API提供了正确的属性来创建透明背景,而不会丢失点击按钮或其他状态的视觉反馈!请阅读下面的答案! (53认同)

lor*_*105 282

不要使用TRANSAPENT或NULL布局,因为按钮(或通用视图)将不会在点击时突出显示!

我遇到了同样的问题,最后我从Android API找到了正确的属性来解决问题.它可以应用于任何视图.

在按钮规格中使用它:

android:background="?android:selectableItemBackground"
Run Code Online (Sandbox Code Playgroud)

  • 对于圆形涟漪效果,请使用`android:background ="?android:selectableItemBackgroundBorderless"` (12认同)
  • 幸运的是,截至 2019 年,这消除了大约 0% 的手机。 (11认同)
  • 似乎使用支持库,可以克服API> = 11的要求http://stackoverflow.com/questions/19714682/android-apply-selectableitembackground-in-xml-with-support-v7 (8认同)
  • 这需要API 11 - 您在野外消除了24%的手机(截至2014年1月) (4认同)

小智 137

您还可以使用透明色:

android:background="@android:color/transparent"
Run Code Online (Sandbox Code Playgroud)

  • @Geykel,@ Adam,你应该知道这个属性在无条件使用时非常危险,因为它会添加另一个透明层,它会被吸引到屏幕上,并可能导致像素过度使用并减慢你的应用程序.为了测试它,你可以使用`Developer选项:Show GPU overdraw`,看看将背景设置为`@ null`和`@android:color/transparent`之间的区别. (8认同)

Eli*_*iko 109

设置背景"@null"将使按钮在单击时无效.这将是一个更好的选择.

style="?android:attr/borderlessButtonStyle"
Run Code Online (Sandbox Code Playgroud)

后来我发现使用了

android:background="?android:attr/selectableItemBackground"
Run Code Online (Sandbox Code Playgroud)

也是一个很好的解决方案.并且您可以以自己的样式继承此属性.

  • 需要API级别11. [来源](http://developer.android.com/reference/android/R.attr.html#selectableItemBackground) (5认同)
  • 这是正确的答案.同样使用AppCompact,通过这个答案,涟漪效果完美无缺,在api 19上,正常的按下效果开箱即用.android:background ="?android:attr/selectableItemBackground"太棒了! (2认同)

Ade*_*dem 14

在运行时,您可以使用以下代码

btn.setBackgroundDrawable(null);
Run Code Online (Sandbox Code Playgroud)

  • btn.setBackgroundColor(Color.TRANSPARENT); 适用于所有API级别 (8认同)

Sam*_*ern 11

我相信接受的答案应该是: android:background="?attr/selectableItemBackground"

这与@ lory105的答案相同,但它使用支持库实现最大兼容性(android:等效仅适用于API> = 11)


Nis*_*hah 8

删除此行:

android:background="@drawable/transparent">
Run Code Online (Sandbox Code Playgroud)

并在您的活动类集中

ImageButton btn = (ImageButton)findViewById(R.id.previous);
btn.setAlpha(100);
Run Code Online (Sandbox Code Playgroud)

您可以将alpha级别设置为0到255

o表示透明,255表示不透明.

  • 这个答案是错误的和误导性的,因为它使整个按钮半透明.如果希望从代码中执行此操作,则将null传递给setBackground方法.setAlpha不是你需要的. (5认同)

nh7*_*nh7 8

如果您需要单击动画,请不要使用 null 或透明。更好的:

//Rectangular click animation
android:background="?attr/selectableItemBackground"

//Rounded click animation
android:background="?attr/selectableItemBackgroundBorderless"
Run Code Online (Sandbox Code Playgroud)


Aja*_*pal 5

最好的方法是使用透明色码

android:background="#00000000"
Run Code Online (Sandbox Code Playgroud)

使用颜色代码#00000000使任何事物透明

  • `@android:color/transparent`没有硬编码值. (4认同)
  • 是的,都很好 (2认同)