我试图从Google网站上获得一张完全透明的导航栏,例如此图片:
我用我的风格:
<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>
但有了这个,我才明白:
有可能得到吗?我做坏事吗?还是只是一个错误?
答案 0 :(得分:3)
答案 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)
添加
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填充添加到主视图