我正在尝试使工具栏透明,如下图所示。我试图以编程方式实现这一目标。
android中的半透明和透明工具栏有什么区别?
请参阅下面的代码和下面的图片,了解我到目前为止的情况。请指出我正确的方向。
public void hideToolbar() {
// toolbar.setVisibility(View.GONE);
toolbar.getBackground().setAlpha(0);
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
}
public void showToolbar() {
// toolbar.setVisibility(View.VISIBLE);
toolbar.getBackground().setAlpha(255);
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {
WindowManager.LayoutParams attrs = getWindow().getAttributes();
attrs.flags &= (~WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
attrs.flags &= (~WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
getWindow().setAttributes(attrs);
getWindow().clearFlags(
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
getWindow().setStatusBarColor(
Color.parseColor(Const.Colors.COLOR_STATUS_BLUE));
}
}
我希望工具栏和状态栏都是透明的。如果您需要我的xmls或其他代码,请告诉我。
答案 0 :(得分:0)
我可以清楚地了解透明和半透明之间的区别。
我不是Android编码的专家,但我告诉了你我知道多少。
答案 1 :(得分:0)
为了避免工具栏背后的内容颜色与工具栏元素/文本的颜色(例如上/后箭头)发生碰撞,工具栏的许多实现实际上都不是透明的,而是带有渐变的半透明。 / p>
您可以使用下一个代码获取此信息:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@drawable/background_toolbar_translucent" />
background_toolbar_translucent.xml
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:angle="270"
android:endColor="@android:color/transparent"
android:startColor="@color/black_alpha_40"/>
</shape>
colors.xml
<color name="black_alpha_40">#66000000</color>
你可以在渐变上玩不同的值,我发现对于白色元素,黑色40%可以正常工作。