我的android项目中有Tab栏和ViewPager的问题。该应用程序具有一个活动,它包含一个标签布局,然后有一个代表每个标签的片段。
当活动打开时,它会发布到API以获取一些数据,并将数据放入数据适配器中,以便在每个片段中进行Recycler View和Card布局。
回收者视图将包含3个项目,但只显示2个项目,因为第一个项目隐藏在工具栏和/或标签栏下方,如下面的屏幕截图所示。
以下是我的活动的布局文件
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context="com.BoardiesITSolution.CritiMonApp.AppsActivity">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<include layout="@layout/toolbar" />
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabMode="fixed"
app:tabGravity="fill" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!--app:layout_behaviour="@string/appbar_scrolling_view_behaviour" />-->
</android.support.design.widget.CoordinatorLayout>
下面是片段的布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<view
android:id="@+id/recycler_view"
class="android.support.v7.widget.RecyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true" />
</LinearLayout>
以下是卡片布局的布局
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cardview="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_margin="8dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:elevation="5dp">
<TextView
android:id="@+id/txtApplicationName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:maxLines="3"
android:padding="8dp"
android:textColor="#222"
android:textSize="15dp"
android:layout_centerInParent="true"/>
</RelativeLayout>
</android.support.v7.widget.CardView>
以下是上面提到的屏幕截图,显示了问题。我已经对一些文字进行了像素化,但它应该是我的意思,应该有3个项目,但第一项隐藏在标签栏下面。
答案 0 :(得分:25)
修改:如@smeet和@hardik所述,添加滚动行为app:layout_behavior="@string/appbar_scrolling_view_behavior"
可以解决问题,同时保留滚动行为。 仅当视图是协调器布局的直接子项时,滚动行为才有效。
旧答案
将您的appbar布局和viewpager包装在垂直LinearLayout
中<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context="com.BoardiesITSolution.CritiMonApp.AppsActivity">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
//appbar layout
//viewpager
</LinearLayout>
</android.support.design.widget.CoordinatorLayout>
来自文档,CoordinatorLayout is a super-powered FrameLayout
。所以你可以期待典型的“在其他视图之上查看视图”的FrameLayout行为。
答案 1 :(得分:13)
添加:
在我应用程式:layout_behavior =&#34; @串/ appbar_scrolling_view_behavior&#34;
ViewPager
已解决的问题中。
答案 2 :(得分:4)
如果我们将滚动带有线性布局的应用栏布局而不是工具栏在滚动时不会隐藏,那么如果要在滚动时隐藏工具栏,则接受的回答可能无法帮助您。
Smeet正确地做了但没有解释!这里有完整的解释说明。
将 SELECT table1.id,table1.newfld, table2.id
FROM table 1
INNER JOIN table2
ON table1.newfld = substring(table2.domainname,CHARINDEX('/',table2.domainname)+1,len(table2.domainname) - 1);
namspace添加到CoordinatorLayout
app
并在<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
......
>
ViewPager
完整的xml将如下所示
app:layout_behavior="@string/appbar_scrolling_view_behavior"