0

有什麼辦法可以讓我的Horizo​​ntalScrollView(SlidingTabLayout)懸停我的ViewPager及其片段,而不是線性顯示它們嗎?使Horizo​​ntalScrollView懸停ViewPager /碎片

<LinearLayout 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:orientation="vertical" 
    tools:context="com.zerohora.app.fragments.ContentFragment"> 

    <com.zerohora.app.widgets.SlidingTabLayout 
     android:id="@+id/sliding_tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     /> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="0px" 
     android:layout_weight="1" 
     android:layout_gravity="top" 
     /> 

</LinearLayout> 

已經嘗試過FrameLayout和RelativeLayout,它沒有工作。在此之後,刷卡停止工作。 也改變了他們的marginTop,但ViewPager總是在ScrollView之上。

這裏的想法是隱藏Horizo​​ntalScrollView(SlidingTab)whener用戶在ViewPager片段中滾動列表。

謝謝

回答

0

我能爲它找到一個解決辦法:

首先通過調用brinToFront帶給你想在別人面前的視圖()方法:

mSlidingTabLayout = (SlidingTabLayout) view.findViewById(R.id.sliding_tabs); 
mSlidingTabLayout.bringToFront(); 

然後,您可以將視圖放在任何地方。如果您想將它放置在頂部但緊跟在動作欄之後,則可以執行以下操作:

  // Get viewport's heigth 
      WindowManager wm = (WindowManager) getActivity().getSystemService(Context.WINDOW_SERVICE); 
      Display display = wm.getDefaultDisplay(); 
      Point size = new Point(); 
      display.getSize(size); 
      int viewportHeight = size.y; 

      // Get ActionBar's height 
      TypedValue tv = new TypedValue(); 
      int actionBarHeight = 0; 
      if (getActivity().getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) { 
       actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, getResources().getDisplayMetrics()); 
      } 

      // Get status bar height 
      int statusBarHeight = 0; 
      int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); 
      if (resourceId > 0) { 
       statusBarHeight = getResources().getDimensionPixelSize(resourceId); 
      } 

      // Set tabs position 
      LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, 
        RelativeLayout.LayoutParams.WRAP_CONTENT); 
      params.topMargin = -(viewportHeight) + actionBarHeight + statusBarHeight; 
      mSlidingTabLayout.setLayoutParams(params); 

      //Redraw display 
      mSlidingTabLayout.invalidate(); 
      mViewPager.invalidate();