2016-01-19 59 views
0

我有一個線性佈局和一個viewpager,它包含一個列表視圖。滾動時,我希望線性佈局(餐廳頁面和圖像)上升。爲此,我嘗試使用scrollView,但它不起作用。我該怎麼辦? ScreenshotScrollView不工作

這是XML -

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:fillViewport="true" 
    android:layout_height="match_parent"> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:id="@+id/ResView" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <include layout="@layout/header_restaurant_page" /> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:layout_marginTop="-40dp" 
     android:background="#ffffff"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:orientation="horizontal" 
      android:layout_height="wrap_content" 
      android:padding="20dp" 
      android:background="@android:color/black"> 

      <TextView 
       android:layout_width="0dp" 
       android:layout_weight="1" 
       android:textAlignment="center" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:text="Pre Order" 
       android:id="@+id/textView8" 
       android:gravity="center" 
       android:textColor="#ffffff" /> 

      <TextView 
       android:layout_width="0dp" 
       android:layout_weight="1" 
       android:textAlignment="center" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:text="Pay Online" 
       android:id="@+id/textView9" 
       android:gravity="center" 
       android:textColor="#ffffff" /> 
     </LinearLayout> 

     <com.astuetz.PagerSlidingTabStrip 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:minHeight="30dp" 
      android:textSize="15sp" 
      app:pstsIndicatorHeight="3dp" 
      app:pstsShouldExpand="true" 
      app:pstsIndicatorColor="@color/white" 
      app:typeface="robotoRegular" 
      android:textColor="#fff" 
      android:background="@android:color/black"/> 

     <android.support.v4.view.ViewPager 
      android:id="@+id/container" 
      android:layout_width="match_parent" android:layout_height="wrap_content" 
      tools:context="com.csform.android.uiapptemplate.restaurant" 
      android:background="#fff"> 

     </android.support.v4.view.ViewPager> 
    </LinearLayout> 

</LinearLayout> 
</ScrollView> 

包括標籤是針對餐館信息的標題。 如果可能,我想在頁面滾動時將PagerSlidingTabStrip(優惠,菜單,關於,評論)貼到最前面。

+0

可能會嘗試使用高度包裝內容滾動視圖 – justDroid

+0

在LinearLayout之前添加此行'。 –

回答

0

我不知道,但你可以嘗試代碼

<?xml version="1.0" encoding="UTF-8" ?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical"> 

<include layout="@layout/tool_bar" /> 

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:scrollbars="none"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 
</LinearLayout> 
</ScrollView> 
</LinearLayout> 
0

您可以用CoordinatorLayoutTabLayout

(類似下面的例子),這樣做很容易:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.v4.widget.NestedScrollView 
     android:id="@+id/scroll" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:clipToPadding="false" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

     <!-- <include layout="@layout/header_restaurant_page" />--> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="@android:color/black" 
      android:orientation="horizontal" 
      android:padding="20dp"> 

      <TextView 
       android:id="@+id/textView8" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:gravity="center" 
       android:text="Pre Order" 
       android:textAlignment="center" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:textColor="#ffffff" /> 

      <TextView 
       android:id="@+id/textView9" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:gravity="center" 
       android:text="Pay Online" 
       android:textAlignment="center" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:textColor="#ffffff" /> 
     </LinearLayout> 

    </android.support.v4.widget.NestedScrollView> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/app_bar_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbarmain" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:layout_collapseMode="pin" 
      app:layout_scrollFlags="scroll|enterAlways" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
      app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" /> 

     <com.astuetz.PagerSlidingTabStrip 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:minHeight="30dp" 
      android:textSize="15sp" 
      app:pstsIndicatorHeight="3dp" 
      app:pstsShouldExpand="true" 
      app:pstsIndicatorColor="@color/white" 
      app:typeface="robotoRegular" 
      android:textColor="#fff" 
      android:background="@android:color/black"/> 

     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsing_toolbar_layout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:fitsSystemWindows="true" 
      app:contentScrim="?attr/colorPrimary" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

      <android.support.v4.view.ViewPager 
       android:id="@+id/pager" 
       android:layout_width="match_parent" 
       android:layout_height="fill_parent" 
       android:layout_below="@id/app_bar_layout" /> 

     </android.support.design.widget.CollapsingToolbarLayout> 

    </android.support.design.widget.AppBarLayout> 

</android.support.design.widget.CoordinatorLayout> 

請記住,ScrollView只能有一個孩子。順便說一句, 。

+0

爲此,我將不得不包含'com.android.support:design:23.1.0',它給我提供了以下問題 - 屬性「textAllCaps」已經定義,並且錯誤正在檢索項目的父項:沒有找到匹配的資源給定名稱'android:TextAppearance.Material.Widget.Button.Inverse'。 – DarkCoderRises

+0

這是另一個問題,請嘗試添加最新的SupportDesign – Mohsen

+0

我應該怎麼做,而不是最新的23.1.0? – DarkCoderRises

0

而是使用自定義視圖尋呼機。

public class SmartViewPager extends ViewPager { 
public SmartViewPager(Context context) { 
    super(context); 
    mGestureDetector = new GestureDetector(context, new XScrollDetector()); 
} 
private GestureDetector mGestureDetector; 
private boolean mIsLockOnHorizontalAxis = false; 

@Override 
public boolean onTouchEvent(MotionEvent event) { 

    if (!mIsLockOnHorizontalAxis) 
     mIsLockOnHorizontalAxis = mGestureDetector.onTouchEvent(event); 

    if (event.getAction() == MotionEvent.ACTION_UP) 
     mIsLockOnHorizontalAxis = false; 

    getParent().requestDisallowInterceptTouchEvent(mIsLockOnHorizontalAxis); 
    return super.onTouchEvent(event); 
} 
private class XScrollDetector extends SimpleOnGestureListener { 


    /** 
    * @return true - if we're scrolling in X direction, false - in Y 
    *   direction. 
    */ 
    @Override 
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { 
     return Math.abs(distanceX) > Math.abs(distanceY); 
    } 

}