如何在Fragment中使用TablLayout?

时间:2018-06-19 12:00:41

标签: java android

我想在Fragment中使用TabLayout。 这是我的fragment_main.xml:

<LinearLayout 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"
tools:context="com.ek.karhabtyapplication.ParkingFragment"
android:orientation="horizontal">

<android.support.design.widget.TabLayout
    android:id="@+id/simpleTabLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:tabBackground="@android:color/darker_gray" />

<FrameLayout
    android:id="@+id/simpleFrameLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

这是我的MainFragment.java:

 tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {


                Fragment fragment = null;
                switch (tab.getPosition()) {
                    case 0:
                        fragment = new ParkingMapFragment();
                        Toast.makeText(getActivity(), "fragm 1 ", Toast.LENGTH_SHORT).show();
                        break;
                    case 1:
                        fragment = new ParkingHistoricFragment();
                        Toast.makeText(getActivity(), "fragm 2 ", Toast.LENGTH_SHORT).show();
                        break;
                }

                FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
                transaction.add(R.id.simpleFrameLayout, fragment);
                transaction.commit();
            }
    });

我在第一个选项卡中单击该消息时出现的问题是提示,但片段没有更改。 任何人都有一个主意。

3 个答案:

答案 0 :(得分:0)

尝试使用此代码,并将android:orientation="horizontal"中的android:orientation="vertical"设置为LinearLayout

 tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {

            switch (tab.getPosition()) {
                case 0:
            Fragment  fragmentOne = new ParkingMapFragment();
            Toast.makeText(getActivity(), "fragm 1 ", Toast.LENGTH_SHORT).show();

            FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
            transaction.add(R.id.simpleFrameLayout, fragment);
            transaction.commit();
                    break;
                case 1:
            Fragment  fragmentTwo = new ParkingHistoricFragment();
            Toast.makeText(getActivity(), "fragm 2 ", Toast.LENGTH_SHORT).show();
            FragmentTransaction transactionOne = getChildFragmentManager().beginTransaction();
            transactionOne .add(R.id.simpleFrameLayout, fragment);
            transactionOne .commit();
                    break;
            }


        }
});

答案 1 :(得分:0)

该Fragment发生更改,但是您看不到它,因为simpleFrameLayout当前不在视图中。 TabLayout会填满屏幕的整个宽度,而FrameLayout会位于TabLayout的右侧。

答案 2 :(得分:0)

您可以轻松地交换和使用它,然后可以在Tab布局下面添加视图分页器。创建视图分页器适配器并在该适配器中添加片段。