2016-10-07 32 views
2

フラグメント内をスクロールしてタブレイアウトにしています。 これは私のMainActivityクラスフラグメント内のスクロールがTabLayoutに機能しない

public class Mainctivity extends AppCompatActivity { 
    private TabLayout tabLayout; 
    private ViewPager viewPager; 
    ViewPagerAdapter viewPagerAdapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     viewPager = (ViewPager) findViewById(R.id.viewpager); 
     setupViewPager(); 
     tabLayout = (TabLayout) findViewById(R.id.tabs); 
     tabLayout.setViewPager(TabLayout.GRAVITY_FILL); 
     tabLayout.setupWithViewPager(viewPager); 
     } 
    private void setupViewPager() { 
     viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager()); 
     String [] tabNames = new String[{"Technology","World","Life"} ; 
     int [] tabTopicIds = new int[]{1,2,3} ; 
     for(int i=0; i< 7; i++) 
     { 
     OneFragment homeFeed = new OneFragment(); 
     Bundle homeArgs = new Bundle(); 
     homeArgs.putString("PAGE_NUMBER",""+tabTopicIds[i]); 
     homeFeed.setArguments(homeArgs); 
     viewPagerAdapter.addFragment(homeFeed, tabNames[i]); 
    } 

    viewPager.setAdapter(viewPagerAdapter); 
    } 

class ViewPagerAdapter extends FragmentPagerAdapter { 
     private final List<Fragment> mFragmentList = new ArrayList<>(); 
     private final List<String> mFragmentTitleList = new ArrayList<>(); 

     public ViewPagerAdapter(FragmentManager manager) { 
      super(manager); 
     } 

     @Override 
     public Fragment getItem(int position) { 

      return mFragmentList.get(position); 
     } 

     @Override 
     public int getCount() { 
      return mFragmentList.size(); 
     } 

     public void addFragment(Fragment fragment, String title) { 
      mFragmentList.add(fragment); 
      mFragmentTitleList.add(title); 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      return mFragmentTitleList.get(position); 
     } 


    } 
} 

そして、ここでは私のactivity_mainレイアウトです。各タブについて、私はFragmentOneのリストビューにlistView.setOnScrollListenerを追加

<?xml version="1.0" encoding="utf-8"?> 

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

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

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="@color/colorPrimary" 
     app:layout_scrollFlags="scroll|enterAlways" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="48dip" 
      android:background="@color/white" 
      app:tabIndicatorColor="@color/colorPrimary" 
      app:pstsIndicatorHeight="3dip" 
      app:pstsTextAllCaps="false" 
      app:tabPaddingStart="2dp" 
      app:tabPaddingEnd="2dp" 
      app:tabGravity="fill"/> 
     <android.support.v4.view.ViewPager 
      android:id="@+id/viewpager" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

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

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

がviewPagerに関連したFragmentOneクラスがあり、これはここでFragmentOne

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/swipe_refresh_layout" 
android:layout_width="match_parent" 
android:layout_height="wrap_content"> 

     <ListView 
      android:id="@+id/list" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:divider="@android:color/darker_gray" 
      android:background="@color/white" 
      android:dividerHeight="1.0sp"/> 

</LinearLayout> 

FragmentOne

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View mainView = inflater.inflate(R.layout.activity_main, container, false); 
     listView = (ListView) mainView.findViewById(R.id.list); 
     feedItems = new ArrayList<FeedItem>(); 
     listAdapter = new FeedListAdapter(getActivity(), feedItems); 
     listView.setAdapter(listAdapter); 

     listView.setOnScrollListener(new EndlessScrollListener() { 
      @Override 
      public boolean onLoadMore(int page, int totalItemsCount) { 
       if(totalItemsCount > 150) return false; 
       return true; 
      } 

      @Override 
      public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
       if(!isLoading && firstVisibleItem + visibleItemCount >= totalItemCount && totalItemCount<MAX_ITEM_IN_LIST){ 
        requestToServer(); // request for next items 
       } 
      } 
     }); 

return mainView; 
} 

レイアウトのonCreateView方法であり、スクロールは機能しません。 しかし、私がFragmentOneをTablayout以外のLinearLayoutのような別のレイアウトに置くと、うまく動作します。

+0

あなたはactivity_main.xmlにAppBarLayout内viewpagerコードを入れているのLinearLayoutの高さが一致する親 – Pavya

+0

を作ります。 AppBarLayoutの外にViewPagerを切り取り、貼り付けます。それがそれを解決することを願っています。 –

答えて

2

アクティビティ_main.xmlのビューバーコードをAppBarLayout内に配置しました。 AppBarLayoutの外にViewPagerを切り取り、貼り付けます。このコードをactivity_main.xmlにコピーします。それがあなたの問題を解決することを願っています。レイアウトFragmentOneで

<?xml version="1.0" encoding="utf-8"?> 

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

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

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="?attr/actionBarSize" 
    android:background="@color/colorPrimary" 
    app:layout_scrollFlags="scroll|enterAlways" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/white" 
     app:tabIndicatorColor="@color/colorPrimary" 
     app:pstsIndicatorHeight="3dip" 
     app:pstsTextAllCaps="false" 
     app:tabPaddingStart="2dp" 
     app:tabPaddingEnd="2dp" 
     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_behavior="@string/appbar_scrolling_view_behavior" /> 

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

ありがとう、どのような大きな救済。 – Moshii

関連する問題