在片段中实现滑动标签

问题描述:

我正在查看如何使用TabLayout的指南。这是他们如何显示附加PagerAdapter类。在片段中实现滑动标签

public class MainActivity extends FragmentActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // Get the ViewPager and set it's PagerAdapter so that it can display items 
    ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); 
    viewPager.setAdapter(new SampleFragmentPagerAdapter(getSupportFragmentManager(), 
     MainActivity.this)); 

    // Give the TabLayout the ViewPager 
    TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs); 
    tabLayout.setupWithViewPager(viewPager); 
} 

但是,他们的TabLayout在一个Activity中,而我的是在一个Fragment中。我无法根据自己的用例来调整代码,因为我没有完全理解活动和片段之间的实际差异。现在,当我尝试在选项卡之间滑动时,没有任何反应。这是我的代码:

public class CandidateListFragment extends Fragment { 
public static final String TAG = "candidates"; 

@InjectView(R.id.tabLayout) TabLayout tabLayout; 

public CandidateListFragment() { 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.fragment_candidatelist, container, false); 
    initInstances(v); 
    return v; 
} 

private void initInstances(View v){ 
    //TODO: Change to support below API level 21 
    getActivity().findViewById(R.id.toolbar_actionbar).setElevation(R.dimen.toolbar_candidatelist_elevation); 
    ViewPager viewPager = (ViewPager) v.findViewById(R.id.viewpager); 
    viewPager.setAdapter(new TabsFragmentPagerAdapter(getActivity().getSupportFragmentManager(), 
      getActivity())); 
    ButterKnife.inject(this, v); 
    tabLayout.setupWithViewPager(viewPager); 
} 

@Override public void onDestroyView() { 
    super.onDestroyView(); 
    ButterKnife.reset(this); 
} 

我想通了! 我有我的xml布局文件的片段设置为RelativeLayout而不是LinearLayout,所以我的ViewPager不在屏幕上,这意味着我无法滑动。这是简单的错误,让我

+0

我会认为RelativeLayout也可以工作。恭喜你解决它。 –