如何使支持工具栏背景透明?

9
有没有办法让新的Android支持工具栏?
android.support.v7.widget.Toolbar

需要有透明背景吗?

我试过将colorPrimary设置为一个ARGB值(#00ffffff),但它只会给我一个实心灰色的栏。而且Toolbar只允许我设置一个背景Drawable。我可以将背景Drawable设置为一个透明的PNG,但这样做好吗?或者有更好的方法吗?

理想情况下,我希望能够在代码中/动画中实现这一点,使某些活动具有透明的栏,而另一些活动则没有。

提前感谢。


我认为这应该可以回答你的问题:https://dev59.com/1l8d5IYBdhLWcg3wvkSN#26508436 - Mark Eibes
2个回答

20

你可以将背景设置为Android的默认透明颜色,这样就可以很好地解决问题。将此添加到您想要透明的 Toolbar 的布局中:

android:background="@android:color/transparent"

如果您想通过编程方式更改alpha值,可以通过修改 Toolbar 背景上的alpha来实现。只需获取 Drawable 的实例并在那里设置alpha即可:

mToolbar = findViewById(R.id.my_toolbar);
mToolbar.getBackground().setAlpha(0);

1
非常感谢您的提示!它非常有效。我意识到我看到的默认灰色实际上是工具栏后面的背景。 - Keith
1
@ebarrenechea 我对我的详细屏幕也做了同样的事情。但是当我回到第一个屏幕时,我的第一个屏幕上的工具栏也变成透明的了。为什么会这样呢..? - Shreyash Mahajan
@ebarrenechea 不是碎片。我打开了第二个活动,在那里我可以按照您的代码设置工具栏背景,然后当我回到我的第一个屏幕时,我的第一个屏幕的工具栏变成透明的了。请在这种情况下帮助我... - Shreyash Mahajan
@iDroidExplorer 我也遇到了同样的问题。为什么会出现这种情况?你能解决吗? - Ramesh
2
@ Ramesh 我也遇到了同样的问题。看起来Toolbar的ColorDrawable背景在不同活动之间是共享的,所以当您更改这个ColorDrawable的alpha或颜色时,它也会在其他活动中被更改。解决这个问题的方法是为Toolbar设置一个新的ColorDrawable作为背景。 - mennovogel
显示剩余2条评论

9
为了回答Nicholas Pesa的问题,以及未来可能会有的其他问题,您可以使用比率通过浮点数设置 alpha,例如:

通过使用比率来设置 alpha,可以使用浮点数,如:

mToolbar.getBackground().setAlpha((int)(myFloatValue) * 255);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接