此Activity
全屏运行。由于Kitkat
中缺少提升,ViewPager
会超过Toolbar
。
这是我的布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/PhotoPager_Layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:theme="@style/ThemeOverlay.AppCompat"
>
<include
android:id="@+id/toolbar"
layout="@layout/toolbar"
android:background="@color/md_dark_appbar"
android:windowActionBarOverlay="true"
/>
<com.horaapps.leafpic.Views.HackyViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/photos_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
这就是它的样子:
关于如何解决这个问题的任何建议?
答案 0 :(得分:2)
RelativeLayout中的项目是z-ordered。 Defaulr oder是:后面的项目背后的早期项目。 您的工具栏首先在RelativeLayout中,因此它位于任何其他视图之后。
有三种解决方案。你可以使用它们中的任何一个。
在RelativeLayout中重新排序视图:将工具栏移动到结束:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/PhotoPager_Layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:theme="@style/ThemeOverlay.AppCompat"
>
<com.horaapps.leafpic.Views.HackyViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/photos_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<include
android:id="@+id/toolbar"
layout="@layout/toolbar"
android:background="@color/md_dark_appbar"
/>
</RelativeLayout>
在onCreate()中的某处调用toolbar.bringToFront()(如果您将此布局用于活动)。例如:
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.layout_activity);// your resource name here
View toolbar = findViewById(R.id.toolbar);
toolbar.bringToFront();
....
}
在onCreate的某处调用ViewGroup :: bringChildToFront作为工具栏视图的父级。如果您在活动的onCreate中使用此布局,则代码应为:
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.layout_activity);// your resource name here
RelativeLayout root = findViewById(R.id.PhotoPager_Layout);
View toolbar = findViewById(R.id.toolbar);
root.bringChildToFront(toolbar);
....
}
答案 1 :(得分:0)
您最好为HackyViewPager自定义视图提供代码,以便更好地了解您的问题。但我的猜测是,在那里你不会考虑不同的OS版本计算底部的软按钮(HOME,BACK,MENU)。从Lollipop开始,软按钮是屏幕的一部分,而在早期版本中,它们不在屏幕上。 希望这会有所帮助。
答案 2 :(得分:0)
对我来说,问题出在ScrollView布局,它是ViewPager的父级,当我删除ScrollView时,它可以工作。 接受的答案中的选项没有帮助我解决