私はメインアクティビティにフラグメントを使用したタブを使用したアクションバーナビゲーション(マテリアルデザイン付き)を持っていますが、これはうまく機能しますが、今ではフラグメント内にタブナビゲーションがあります...
// Add Fragments to Tabs in Main Activity
private void setupViewPager(ViewPager viewPager) {
Adapter adapter = new Adapter(getSupportFragmentManager());
adapter.addFragment(new FeedsFragment(), "Latest Updates");
adapter.addFragment(new ClubTeamsFragment(), "Club Teams");
adapter.addFragment(new FixturesFragment(), "Fixtures");
adapter.addFragment(new ResultsFragment(), "Results");
adapter.addFragment(new ClubFieldsFragment(), "Club Fields");
viewPager.setAdapter(adapter);
}
TabHostが非推奨になったと確信しています。
添付の画像を実現したいです。青いタブはメインアクティビティレベルにあり、灰色の日付タブは選択したフラグメントビューにあります。
Tab HostまたはFragment Activityの使用に関するいくつかの投稿を読みましたが、Fragmentに拡張されたActivityを使用しますか?
MainActivityにあるフラグメントタブ内のフラグメントタブを使用して達成した以下の回答を参照してください
getChildFragmentManager()を使用して私のフラグメント内
public class FixturesTabs extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fixtures_new_tabs,container, false);
// Setting ViewPager for each Tabs
ViewPager viewPager = (ViewPager) view.findViewById(R.id.viewpager);
setupViewPager(viewPager);
// Set Tabs inside Toolbar
TabLayout tabs = (TabLayout) view.findViewById(R.id.result_tabs);
tabs.setupWithViewPager(viewPager);
return view;
}
// Add Fragments to Tabs
private void setupViewPager(ViewPager viewPager) {
Adapter adapter = new Adapter(getChildFragmentManager());
adapter.addFragment(new TodaysFixturesFragment(), "Today");
adapter.addFragment(new WeekFixturesFragment(), "Week");
adapter.addFragment(new MonthFixturesFragment(), "Month");
adapter.addFragment(new AllFixturesFragment(), "Month");
adapter.addFragment(new MyTeamsFixturesFragment(), "My Teams");
viewPager.setAdapter(adapter);
}
static class Adapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public Adapter(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);
}
}
}
そして、「fixtures_new_tabs.xml」という名前の私のXMLは、膨張したレイアウトに一致します
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
xmlns:app="http://schemas.Android.com/apk/res-auto">
<Android.support.design.widget.CoordinatorLayout
Android:id="@+id/main_content"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<Android.support.design.widget.AppBarLayout
Android:id="@+id/appbar"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<Android.support.design.widget.TabLayout
Android:id="@+id/result_tabs"
Android:background="@color/grey"
app:tabTextColor="@color/medium_grey"
app:tabSelectedTextColor="@color/colorPrimary"
app:tabIndicatorColor="@color/colorPrimary"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
app:tabMode="scrollable"/>
</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>
</RelativeLayout>
これが他の人たちの解決の方向性を助けたり、指し示すことを願っています。
追伸これを実装した後に白い画面が表示される場合、同じ親フラグメントをその子フラグメントに追加している可能性があります。
タブが適切に整列しなかったため、HanおよびBENN1THソリューションでいくつかの点を変更しました。2つのフラグメントのみを追加しました。 (5つのフラグメントを追加しました)。これがお役に立てば幸いです。
<Android.support.design.widget.AppBarLayout
Android:id="@+id/appbar"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
app:layout_scrollFlags="scroll|enterAlways"
Android:paddingTop="@dimen/appbar_padding_top"
Android:theme="@style/AppTheme.AppBarOverlay">
<Android.support.design.widget.TabLayout
Android:id="@+id/result_tabs"
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
</Android.support.design.widget.TabLayout>
</Android.support.design.widget.AppBarLayout>