在报亭应用中使工具栏透明

时间:2015-03-10 13:43:39

标签: android android-layout android-toolbar

我正在尝试使工具栏透明,如下图所示。我试图以编程方式实现这一目标。

enter image description here

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));
    }
}

enter image description here enter image description here

我希望工具栏和状态栏都是透明的。如果您需要我的xmls或其他代码,请告诉我。

2 个答案:

答案 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%可以正常工作。