android-fragments TabLayout未显示Android

wribegjk  于 2022-11-13  发布在  Android
关注(0)|答案(6)|浏览(218)

不明白为什么我的TabLayout没有在我的片段中显示我在片段的支持版本,sdk 25下,一切都很好,但看不到我的TabLayout,搜索后,我没有找到任何关于我的问题,请一些帮助。下面是我的代码:

  1. public class ViewPagerFragment extends Fragment {
  2. public static final String KEY_NEW_INDEX = "key_new_index";
  3. private ViewPager mViewPager;
  4. private TabLayout mTabLayout;
  5. @Nullable
  6. @Override
  7. public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
  8. final View view = inflater.inflate(R.layout.fragment_view_pager, container, false);
  9. final SportFragment sportFragment = new SportFragment();
  10. Bundle bundle = new Bundle();
  11. sportFragment.setArguments(bundle);
  12. final BuzzFragment buzzFragment = new BuzzFragment();
  13. bundle = new Bundle();
  14. buzzFragment.setArguments(bundle);
  15. mViewPager = (ViewPager) view.findViewById(R.id.viewPager);
  16. mTabLayout = (TabLayout) view.findViewById(R.id.tabLayout);
  17. mViewPager.setAdapter(new FragmentPagerAdapter(getChildFragmentManager()) {
  18. @Override
  19. public Fragment getItem(int position) {
  20. return position == 0 ? sportFragment : buzzFragment;
  21. }
  22. @Override
  23. public CharSequence getPageTitle(int position) {
  24. return position == 0 ? "Sport" : "Buzz";
  25. }
  26. @Override
  27. public int getCount() {
  28. return 2;
  29. }
  30. });
  31. mTabLayout.setupWithViewPager(mViewPager);
  32. return view;
  33. }
  34. }

这是我的xml文件:

  1. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. tools:context="com.example.ideo.testfrag.FragmentUI.Fragments.ViewPagerFragment">
  6. <android.support.design.widget.TabLayout
  7. android:layout_width="match_parent"
  8. android:layout_height="wrap_content"
  9. android:id="@+id/tabLayout"
  10. android:background="@color/colorPrimary"/>
  11. <android.support.v4.view.ViewPager
  12. android:id="@+id/viewPager"
  13. android:layout_width="match_parent"
  14. android:layout_height="match_parent"/>
  15. </FrameLayout>
fdbelqdn

fdbelqdn1#

在我的MainActivity托管几个选项卡的情况下,我这样做:

主要活动JAVA:

  1. public class MainActivity extends AppCompatActivity {
  2. TabLayout tabLayout;
  3. @Override
  4. protected void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.activity_main);
  7. int position = 0;
  8. tabLayout = (TabLayout) findViewById(R.id.tab_layout);
  9. tabLayout.addTab(tabLayout.newTab().setText("HOME"));
  10. tabLayout.addTab(tabLayout.newTab().setText("Search"));
  11. tabLayout.addTab(tabLayout.newTab().setText("PROFILE"));
  12. tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
  13. final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
  14. final PagerAdapter adapter = new PagerAdapter
  15. (getSupportFragmentManager(), tabLayout.getTabCount());
  16. viewPager.setAdapter(adapter);
  17. viewPager.setOffscreenPageLimit(2);
  18. viewPager.setCurrentItem(position);
  19. viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
  20. tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
  21. @Override
  22. public void onTabSelected(TabLayout.Tab tab) {
  23. viewPager.setCurrentItem(tab.getPosition());
  24. if(tab.getPosition() == 0){
  25. InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
  26. inputMethodManager.hideSoftInputFromWindow(viewPager.getWindowToken(), 0);
  27. }
  28. else if(tab.getPosition() == 1){
  29. InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
  30. inputMethodManager.hideSoftInputFromWindow(viewPager.getWindowToken(), 0);
  31. }
  32. else if(tab.getPosition() == 2){
  33. InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
  34. inputMethodManager.hideSoftInputFromWindow(viewPager.getWindowToken(), 0);
  35. }
  36. }
  37. @Override
  38. public void onTabUnselected(TabLayout.Tab tab) {
  39. }
  40. @Override
  41. public void onTabReselected(TabLayout.Tab tab) {
  42. }});
  43. }
  44. }

主活动XML

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:id="@+id/activity_main"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent"
  6. android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
  7. tools:context="celebritytime.com.celeberitytime.MainActivity">
  8. <FrameLayout
  9. android:id="@+id/container_id"
  10. android:layout_width="0dp"
  11. android:layout_height="match_parent">
  12. </FrameLayout>
  13. <android.support.design.widget.TabLayout
  14. android:id="@+id/tab_layout"
  15. android:tag="NationFragmentTag"
  16. android:showDividers="none"
  17. android:layout_width="match_parent"
  18. android:layout_height="wrap_content"
  19. android:layout_alignParentTop="true"
  20. android:background="#020202"
  21. android:minHeight="?attr/actionBarSize"
  22. android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>
  23. <android.support.v4.view.ViewPager
  24. android:id="@+id/pager"
  25. android:layout_width="match_parent"
  26. android:layout_height="fill_parent"
  27. android:layout_below="@id/tab_layout"/>
  28. </RelativeLayout>

如果您需要ViewPager代码,请告诉我。

展开查看全部
cx6n0qe3

cx6n0qe32#

您没有在tablayout中添加选项卡
在初始化tablayout后调用this

  1. //Adding the tabs using addTab() method
  2. tabLayout.addTab(tabLayout.newTab().setText("Sport"));
  3. tabLayout.addTab(tabLayout.newTab().setText("Buzz"));
0dxa2lsx

0dxa2lsx3#

您正在使用FrameLayout,因此您的视图页与您的选项卡视图重叠。相对版式也会发生同样的情况。要解决此问题,请使用线性版式或使用相对版式的below属性(用相对版式替换框架版式)。

snvhrwxg

snvhrwxg4#

我知道它有点旧,但请检查页面查看器视图是否未覆盖选项卡布局

9udxz4iz

9udxz4iz5#

有同样的问题。在我将这一行注入xml格式的TabLayout后就解决了:

  1. android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"

由于您需要在AndroidManifest中设置.noActionBar来删除旧的ActionBar,如果您也是这种情况,则不容易猜测。

mznpcxlj

mznpcxlj6#

**注意:**如果您使用的是viewpager2,请不要忘记将此方法(attach)添加到TabLayoutMediator的末尾

  1. val viewpager = findViewById<ViewPager2>(R.id.viewpager_main)
  2. val tablayout = findViewById<TabLayout>(R.id.tablayout_main)
  3. viewpager.adapter = pagerTabAdapter
  4. TabLayoutMediator(tablayout , viewpager , true) { tab , index ->
  5. val title = titleList[index]
  6. tab.text = title
  7. }.attach()

相关问题