【问题标题】:Tabs with in the Tabs in android studioandroid studio 中的选项卡中的选项卡
【发布时间】:2016-08-20 11:16:56
【问题描述】:

我只想在选项卡中实现选项卡。如果可以的话请分享代码

参考下图

【问题讨论】:

  • 你必须在片段内制作标签
  • 我试过了..但有一个错误。在这个链接中有一个适配器类。通过导入该类,它实现了代码中没有的几种方法。我很困惑我必须导入哪个适配器类 [Widget.Adapter 或 Recyclerview.Adapter]
  • 不,我在下面创建了那个
  • 现在看到我已经更新了代号,所以你不会混淆

标签: android android-fragments android-viewpager android-tabhost


【解决方案1】:

这是我的问题的答案。我在选项卡中设置了选项卡。基本上在片段中设置标签:

我的java代码:

public class SD extends Fragment {
View view;
PagerAdapter adapter;
public SD() {
    // Required empty public constructor
}

private void setupViewPager(ViewPager viewPager) {

///这里我们必须传递 ChildFragmentManager 而不是 FragmentManager。

    adapter = new PagerAdapter(getChildFragmentManager());
    adapter.addFragment(new Sim1Detail(), "Sim 1");
    adapter.addFragment(new Sim2Detail(), "Sim 2");
    viewPager.setAdapter(adapter);
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.sd, container, false);
    super.onCreate(savedInstanceState);
   // ButterKnife.bind(getActivity(), view);
    final ViewPager viewPager = ButterKnife.findById(view, R.id.viewpager);
    setupViewPager(viewPager);
    TabLayout tabLayout = ButterKnife.findById(view, R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);
    return view;
}

@Override
public void onDestroyView() {
    super.onDestroyView();
   // ButterKnife.unbind(getActivity);
}

static class PagerAdapter extends FragmentPagerAdapter {
    private final List<Fragment> mFragments = new ArrayList<>();
    private final List<String> mFragmentTitles = new ArrayList<>();

    public PagerAdapter(FragmentManager fm) {
        super(fm);
    }


    public void addFragment(Fragment fragment, String title) {
        mFragments.add(fragment);
        mFragmentTitles.add(title);
    }

    @Override
    public Fragment getItem(int position) {
        return mFragments.get(position);
    }

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

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

}

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.TabLayout
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:tabGravity="fill"
    app:tabMode="fixed" />

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

在这里..

【讨论】:

  • add compile 'com.jakewharton:butterknife:6.0.0' 您只需在您的应用程序 gradle 文件中添加此语句,如果答案对您有帮助,请点赞。 . @UmarAta