完全透明的导航栏

时间:2015-03-11 20:05:59

标签: android uinavigationbar transparent

我试图从Google网站上获得一张完全透明的导航栏,例如此图片:

enter image description here

我用我的风格:

<item name="android:navigationBarColor">@android:color/transparent</item>

然后我的导航栏是白色的,我放了一个填满所有屏幕的图像视图:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clipToPadding="false"
    android:fitsSystemWindows="false"
    tools:context=".MainActivity">

    <ImageView
        android:paddingTop="200dp"
        android:id="@+id/imageView"
        android:layout_width="match_parent"
        android:layout_height="2000dp"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:scaleType="center"
        android:src="@drawable/image" />
</RelativeLayout>

但有了这个,我才明白:

enter image description here

有可能得到吗?我做坏事吗?还是只是一个错误?

3 个答案:

答案 0 :(得分:3)

在你的主题中写下这一行:

<item name="android:windowTranslucentNavigation">true</item>

点击此处sample app

答案 1 :(得分:0)

不推荐使用完全透明的导航栏,但如果真的想要它,您可以使用DrawerInsetsFrameLayout类,它允许您修改导航的背景和状态栏。
有关此帖子的更多信息:https://plus.google.com/+AndroidDevelopers/posts/T4FQkkJ5bGc

您只需在布局上设置透明色,如下所示:

<FrameLayout>
        <ListView … /> <!-- or whatever else is your content -->
        <your.package.DrawInsetsFrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            yourapp:insetBackground="@android:color/transparent" />
</FrameLayout>

答案 2 :(得分:0)

你的onCreate函数中的

添加

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        Window w = getWindow(); // in Activity's onCreate() for instance
        w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
        w.setNavigationBarColor(Color.TRANSPARENT);
    }

在XML中:values-v21(在您的活动使用的样式内)

<item name="android:navigationBarColor">@android:color/transparent</item>

然后,如果您希望您的内容不在导航栏下,请使用以下函数获取导航栏的高度:

 private int getNavHeight() {
    Resources resources = getResources();
    int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
    if (resourceId > 0) {
        return resources.getDimensionPixelSize(resourceId);
    }
    return 0;
}

然后使用它将buttom填充添加到主视图