当前位置: 首页 > 知识库问答 >
问题:

如何为android标签视图中嵌入的不同片段设置不同的布局

堵鸿光
2023-03-14

我目前正在尝试创建一个选项卡视图,其中每个选项卡打开不同的布局。我正在使用android.support.design.widget.TabLayout,并且我使用适配器成功地将其与pagerView链接起来。现在,在myFragment类中,如果我调用onCreateView并膨胀布局,则布局(fragment_main)将显示在所有选项卡中。

public static class MyFragment extends Fragment {
        public MyFragment() {

        }

        public static MyFragment newInstance(int pageNumber) {
            MyFragment myFragment = new MyFragment();
            return myFragment;
        }


        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container,false);

            return rootView;
        }
    }

我有3个片段连接3个标签。现在如何为每个片段设置不同的布局。

我的适配器类是

class MyPagerAdapter extends FragmentStatePagerAdapter {
        String[] tabs;
        public MyPagerAdapter(FragmentManager fm) {
            super(fm);
            tabs=getResources().getStringArray(R.array.tabs);
        }

        @Override
        public Fragment getItem(int position) {
            NavigationActivity.MyFragment myFragment = NavigationActivity.MyFragment.newInstance(position);
            return myFragment;
        }

        @Override
        public int getCount() {
            return 3;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return tabs[position];
        }
    } 

共有3个答案

夏青青
2023-03-14

请访问这个我想这可以帮助你-https://code load . github . com/cul mor 30/Android-fragments-example/zip/master

常自怡
2023-03-14

在您< code>getItem()方法中,

Fragment frgmt = null;

    switch (position) {
    case 0:

        frgmt = new fragment1(Context);
        break;
    case 1:

        frgmt = new fragment2(Context);
        break;
    case 2:

        frgmt = new fragment3(Context);
        break;

    default:
        break;
    }

    return frgmt;

然后创建这些片段和它们各自的布局。

董洲
2023-03-14

您正在为以下方法中的所有位置传递相同的片段,这导致了问题,

@Override
    public Fragment getItem(int position) {
        NavigationActivity.MyFragment myFragment = NavigationActivity.MyFragment.newInstance(position);
        return myFragment;
    }

对于解决方案,您必须为不同的位置返回不同的片段,或者至少使用不同的布局。

ArrayList< Fragment > tabFragments = new ArrayList<Fragment>();
fragments.add(new FragmentA());
fragments.add(new FragmentB());
fragments.add(new FragmentC());


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

我发现下面提到的博客非常有用。每个步骤都在那里描述。它使用的是 TabListener。如果实现肯定与您正在寻找的不一样,但您可能会得到一个很好的概述,

Android片段选项卡示例:http://examples.javacodegeeks.com/android/core/app/fragment/android-fragment-tabs-example/

 类似资料:
  • 我有这样的语法: 问题是,我不能在polygonType、pointList规则(除了POLYGON_分隔符,我需要使用逗号)和boolOperator规则(使用逗号)中同时使用逗号标记不同的规则。换句话说,如果我们将POLYGON_分隔符改为逗号,并用这样的值测试这样的语法 我们将得到一个错误 如果有人能帮我理解这个问题,我会很高兴的。 另外,如果我们不改变当前语法,测试的值是

  • 问题 我想在一个活动中创建带有2个片段的viewpager。这个片段有不同的菜单选项,并且一个片段是嵌套的-通过单击listview项目,打开带有新数据的相同片段(),但是viewpager不能正确替换(当我这样做时。 我用了这个答案——https://stackoverflow.com/a/18020219/5576117,,但是我有不同的菜单选项,而且菜单选项是从片段容器中膨胀出来的。 因此,

  • 我想停止我的几个页面显示在搜索结果中。我的理解是,我将以下内容添加到页面的部分: 问题是我的页面使用了一个通用的布局页面。类似于: 布局页面内部是head部分,包含大量链接、脚本和元标记。我不想为可索引和不可索引的页面重复这一点。 从我的研究中我发现:- 有多个节是错误的。 将robot meta标记放在head之外是不好的。 使用robots.txt超出了我的需要,而且是错误的。 试图将模型传递

  • 当我启动一个实现viewpager的活动时,viewpager创建了各种片段。我想为每个片段使用不同的布局,但问题是viewpager最大只显示两个布局(在1之后的所有剩余片段上显示第二个布局)。 下面是实现viewpager的SwipeActivity的代码: 这是片段的代码

  • 我有以下具有内部跨度的div: 和相关CSS: 问题是字体大小是良好的分辨率约640 x 320在横向,但如果我试图设置的分辨率设备,例如1920 x 1080,我总是得到的字体小于640 px分辨率(见下图)。 我应该设置什么以得到相同的尺寸和比例的不同的尺寸? 视口设置为: 车身: 整个模板为: 谢谢你的建议。

  • 问题内容: 我的gradle文件中设置了两种构建类型:debug和release。我希望能够为debug构建类型设置其他应用程序图标。有没有办法通过构建类型来实现此目的而又不涉及产品风味?build.gradle文件在下面。 问题答案: 弄清楚了。您需要做的是创建一个单独的src文件夹debug,其中包含不同的图标。例如,如果您的项目布局如下,并且启动器图标称为ic_launcher.png: 然