ViewPager kitkat 背后的工具栏
Toolbar behind ViewPager kitkat
此 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>
这是它的样子:
关于如何解决这个问题有什么建议吗?
您最好提供您的 HackyViewPager 自定义视图的代码,以便更好地理解您的问题。但我的猜测是,在那里您不会考虑不同的 OS 版本,包括底部的软按钮(HOME、BACK、MENU)。从 Lollipop 开始,软键是屏幕的一部分,而在早期的版本中,它们是在屏幕之外的。
希望这有帮助。
RelativeLayout 中的项目是按 z 顺序排列的。
Defaulr order 是:较早的项目在较晚的项目之后。
您的工具栏位于 RelativeLayout 中的第一个,因此它位于任何其他视图之后。
一共有三种解法。您可以使用其中任何一个。
重新排序 RelativeLayout 中的视图:将 toolbat 移至末尾:
<?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()(如果您将此布局用于 activity)。示例:
@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。如果你在activity的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);
....
}
对我来说,问题出在 ScrollView 布局,它是 ViewPager 的父级,当我删除 ScrollView 时,它起作用了。
已接受答案中的选项并没有帮助我解决它
此 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>
这是它的样子:
关于如何解决这个问题有什么建议吗?
您最好提供您的 HackyViewPager 自定义视图的代码,以便更好地理解您的问题。但我的猜测是,在那里您不会考虑不同的 OS 版本,包括底部的软按钮(HOME、BACK、MENU)。从 Lollipop 开始,软键是屏幕的一部分,而在早期的版本中,它们是在屏幕之外的。 希望这有帮助。
RelativeLayout 中的项目是按 z 顺序排列的。 Defaulr order 是:较早的项目在较晚的项目之后。 您的工具栏位于 RelativeLayout 中的第一个,因此它位于任何其他视图之后。
一共有三种解法。您可以使用其中任何一个。
重新排序 RelativeLayout 中的视图:将 toolbat 移至末尾:
<?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()(如果您将此布局用于 activity)。示例:
@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。如果你在activity的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); .... }
对我来说,问题出在 ScrollView 布局,它是 ViewPager 的父级,当我删除 ScrollView 时,它起作用了。 已接受答案中的选项并没有帮助我解决它