TabLayout 的选项卡未显示

2023-11-22

我有一个主要活动,它托管一个片段,该片段又托管一个 TabLayout (带有 ViewPager)。显示选项卡栏,但不显示选项卡本身。

这是我在主要活动中用于显示主机片段的代码:

        Fragment fragment = new BMITabsFragment();

        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).addToBackStack(Constants.BMI_TABS_FRAGMENT).commit();

这是我的托管 TabLayout 的片段,即 BMITabsFragment (s.a.):

public class BMITabsFragment extends Fragment {
...
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (getArguments() != null) {
        mParam1 = getArguments().getString(ARG_PARAM1);
        mParam2 = getArguments().getString(ARG_PARAM2);
    }

}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    // Get the ViewPager and set it's PagerAdapter so that it can display items
    ViewPager viewPager = (ViewPager) view.findViewById(R.id.viewpager);
    viewPager.setAdapter(new BMIFragmentPagerAdapter(getActivity().getSupportFragmentManager(),
            getActivity()));

    // Give the TabLayout the ViewPager
    TabLayout tabLayout = (TabLayout) view.findViewById(R.id.sliding_tabs);
    tabLayout.setupWithViewPager(viewPager);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_bmitabs, container, false);
    return view;
}
...
}

这是我的 FragmentPagerAdapter:

public class BMIFragmentPagerAdapter extends FragmentPagerAdapter {

final int PAGE_COUNT = 2;
private FragmentManager fragmentManager;
private Context context;

public BMIFragmentPagerAdapter(FragmentManager fm, Context context) {
    super(fm);
    this.context = context;
    this.fragmentManager = fm;

}

public BMIFragmentPagerAdapter(FragmentManager fm) {
    super(fm);
    fragmentManager = fm;

}

@Override
public CharSequence getPageTitle(int position) {
    String[] pageTitles = context.getResources().getStringArray(R.array.page_titles_array);
    return pageTitles[position];
}

@Override
public Fragment getItem(int position) {
    SharedPreferences prefs = context.getSharedPreferences(Constants.SHARED_PREFS_FILE, 0);
    long patientId = prefs.getLong(Constants.SELECTED_PATIENT_ID, 1);
    Fragment fragment = null;
    switch (position){
        case 0:
            return BMITabelleFragment.newInstance(patientId);

        case 1:
            return BMIChartFragment.newInstance(patientId);

        default:
            return BMITabelleFragment.newInstance(patientId);
    }
}

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

这是fragment_bmitabs.xml:

<?xml version="1.0" encoding="utf-8"?>

<android.support.design.widget.TabLayout
    android:id="@+id/sliding_tabs"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:tabMode="scrollable" />

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

</LinearLayout>

我的代码基于 Google Android 指南:https://github.com/codepath/android_guides/wiki/Google-Play-Style-Tabs-using-TabLayout

我在这里缺少什么?

注意:我正在使用 AppCompatActivity 以及支持库 v4 和 v7 以及 com:android:support:design 库


这为我解决了这个问题:

tabLayout.post(new Runnable() {
    @Override
    public void run() {
        tabLayout.setupWithViewPager(viewPager);
    }
});

https://code.google.com/p/android/issues/detail?id=180462

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TabLayout 的选项卡未显示 的相关文章

  • 仅使用 Context 而不是 Activity 实例显示对话框

    如果我使用 Activity 实例 我可以显示对话框 但当我使用上下文或应用程序上下文实例时 对话框不会显示 AlertDialog Builder builder new AlertDialog Builder activity buil
  • layout_constrainedWidth 无法正常工作

    我的 ConstraintLayout 中有 EditText 和 TextView TextView显示EditText的内容 输入时 我需要 EditText 展开直到屏幕中间 而 TextView 跟随它并填充后半部分 我将指导方针设
  • 标准呼叫屏幕上的活动窗口 - 启用按钮

    我想在通话屏幕活动上添加一个小窗口 弹出窗口 谷歌语音 and 世界通话地点和时间 http areacellphone com 2010 04 android worldcallplaceandtime apps know place a
  • 为什么 Android 服务在测试时不是单例的?

    当运行大量测试套件时 我注意到我的一个 Android 服务不再是单例的 Android 服务应该是单例的 但是当使用 ServiceTestCase 时 我的引用计数超过 1 在 onCreate 中递增 在 onDestroy 中递减
  • 视图绑定对应用程序大小的影响有多大?

    View Binding 按照文档的规定 为每个XML元素生成一个Binding类 以方便访问和检查 并减轻如下的时间负担 findViewById 虽然findViewById通过更昂贵的关联搜索进行操作 由于映射 绑定应该 直接 访问
  • 在 Android 上使用 MediaPlayer 流式传输经过身份验证的视频

    我正在尝试从具有基本身份验证的 SharePoint 服务器 URL 流式传输和播放视频 用户名密码 在我的 Android 设备中browser Media Player VideoView但我得到了 错误 sorry this vide
  • 整个应用程序中的全局“搜索功能”

    在我的整个应用程序中 我希望搜索按钮执行单独的操作Activity 即 当我按下搜索按钮时 从应用程序中的任何位置调用一个单独的活动 有什么方法可以代替定义onSearchRequested 在每项活动中 我只是在一个地方配置它 例如Man
  • 使用 Android WebViewClient 启用特定 SSL 协议

    我的应用程序使用WebViewClient与服务器建立 SSL 连接 服务器配置为仅接受 TLSv1 1 及以上协议 使用 Android 时 如何检查哪些 SSL 协议是 a 支持的和 b 默认启用的WebViewClient在设备上 如
  • Android 滚动视图无法以编程方式创建。

    我想在我的应用程序中使用滚动视图 我尝试将文本视图添加到滚动视图中 但除了滚动视图的背景颜色之外 我看不到任何渲染的内容 我是这样做的 public class MyView extends ViewGroup ScrollView myS
  • Camera2设置预览(View)并获取预览回调

    我想从 Camera2 获取预览以及用于处理帧的 byte 回调 mImageReader ImageReader newInstance largest getWidth largest getHeight ImageFormat RAW
  • 输入连接-如何删除选定的文本?

    我为 Android 制作了一个自定义键盘 当我按下键盘的退格按钮时 我使用 getCurrentInputConnection deleteSurroundingText 1 0 从输入字段中删除一个字母 但是 当我选择一些文本然后按退格
  • Android repo 脚本创建的 .repo/projects/ 中的裸 git 存储库的用途是什么?

    The 安卓源码 http android git kernel org 由以下人员管理repo http source android com source version control html 使用 repo 同步时 一个名为 re
  • eclipse - 在android虚拟设备中卡住中文

    当我在 Eclipse 中运行 Android 模拟器时 当我尝试编写文本时 所有键盘字符都会被翻译为中文 为什么是这样 Thanks 点击并按住EditText Select 输入法 Select 安卓键盘
  • 单击输入字段会触发窗口调整大小

    我有一个带有徽标 菜单和搜索的标题 当我在桌面上时 我会按该顺序显示所有元素 但如果我的窗口宽度小于 980 像素 菜单会隐藏 有一个切换按钮 并且徽标会与nav并附在徽标之后 如果宽度更大 则徽标将再次分离并附加到 DOM 中的旧位置 w
  • 如何在警报对话框中为图像按钮设置 onclick 侦听器

    我有一个带有 ImageButton 的布局 该布局在 AlertDialog 中膨胀 我应该在哪里 如何设置 onClick 侦听器 这是我尝试使用的代码 ImageButton ib ImageButton findViewById R
  • Facebook Android 意图

    我对这个意图有疑问 这个意图是发送文本类型的消息 一切正常 电子邮件 短信 推特以及手机上的任何内容 但唯一有问题的是facebook 它会尝试以链接而不是文本的形式发布 Intent s new Intent android conten
  • 在哪里可以获得用于导入 libcore.io 的 JAR?

    我想处理一个GaiException在我的应用程序中 调试器告诉我 它位于 libcore io 包中 但导入它会产生错误 我想我需要向我的项目添加一个额外的 JAR 才能正确解析此类型 我在我的 android sdk 文件夹中进行了一些
  • 如何在kotlin中使用Coroutine每秒调用一个函数

    我刚刚创建了一个应用程序 其中我的函数 getdata 每秒调用一次以从服务器获取新数据 而 updateui 函数将更新 UI 中的视图 我在我的应用程序中不使用任何异步任务或协程 我想这样做 请告诉我我怎样才能做到这一点 这是我的代码
  • 停止前台运行的服务的正确方法是什么

    我正在尝试停止作为前台服务运行的服务 当前的问题是当我打电话时stopService 通知仍然保留 因此 在我的解决方案中 我添加了一个接收器 我正在将其注册到onCreate 在 的里面onReceive 我调用的方法stopforegr
  • 如何减少导航图标和工具栏标题之间​​的差距?

    我的问题是导航抽屉图标和工具栏标题之间 有多余的空间 示例图像如下 工具栏的xml视图是

随机推荐

  • mysqli出现问题怎么办?类似 mysqli_fetch_array() 的错误:参数 #1 必须是 mysqli_result 类型等

    在我的本地 开发环境中 MySQLi 查询执行正常 但是 当我将其上传到我的网络主机环境时 出现以下错误 致命错误 在 中的非对象上调用成员函数bind param 这是代码 global mysqli stmt mysqli gt pre
  • Javascript 文件无法在 github 页面上运行 [重复]

    这个问题在这里已经有答案了 我能够在本地计算机上加载我的 javascript 文件 但在 github 页面上 它不起作用 我已将该文件包含在 index html 中 该网站是https abhikulshrestha22 github
  • Java 堆转储:如何通过 1. io.netty.buffer.ByteBuf Util 2. byte[] 数组查找占用内存的对象/类

    我发现我的一个 Spring Boot 项目的内存 RAM 消耗 日益增加 当我将 jar 文件上传到 AWS 服务器时 它占用了 582 MB 的 RAM 最大分配的 RAM 为 1500 MB 但是每天 RAM 都会增加 50MB 到
  • 用作接口替代品的内部类示例

    我被告知的内容激发了我对这个话题的好奇 Java gui 类可以实现数百个侦听器和回调 并且许多书籍教您在 gui 类中实现所有这些接口 或者 这些方面可以在内部类中实现 因此侦听器调用的方法不会混淆 我想知道如何在 ActionScrip
  • 在Python中,在具有特定扩展名的目录中构建文件列表的最快方法

    在 GNU Linux 系统上的 Python 中 递归扫描目录中所有内容的最快方法是什么 MOV or AVI文件 并将它们存储在列表中 您可以使用 os walk 进行递归行走 使用 glob glob 或 fnmatch filter
  • 设置自定义字体

    我正在尝试在程序中将自定义字体 bilboregular ttf 设置为 2 个 jLabels 但字体未成功加载 主要方法调用如下 this should work if the build is in a jar file otherw
  • 如何在 MySQL 中将字符串添加到列值之前?

    我需要一个 SQL 更新语句来更新所有行的特定字段 并在现有值的前面添加一个字符串 test 例如 如果现有值为 try 则应变为 testtry 您可以使用CONCAT函数来做到这一点 UPDATE tbl SET col CONCAT
  • 从现有存储库的子目录创建新的 git 存储库

    我想从现有存储库的子文件夹中创建一个单独的存储库 将子目录分离 移动 到单独的 Git 存储库中恰恰表明了这一点 但是 我无法用它得到一个干净的仓库 我最终遇到了新存储库的两个问题 历史似乎是重复的 我无法保留分支历史记录 这是我所做的 g
  • 用 range() 以相反的顺序打印列表?

    如何生成以下列表range 在Python中 9 8 7 6 5 4 3 2 1 0 Use reversed 函数 高效 因为range实施 reversed reversed range 10 这更有意义 Update list cas
  • 关于 emacs 中的自动完成和 yasnippet

    我在 Emacs 中使用自动完成和 yasnippet 但我对它们的设置感到困惑 我将以下代码放入我的 emacs add to list load path emacs d plugins yasnippet require yasnip
  • 我应该使用 Windows 服务还是 ASP.NET 后台线程?

    我正在 ASP NET 3 5 中编写一个 Web 应用程序 它负责一些基本的数据输入场景 应用程序还有一个组件需要不断轮询一些数据并根据业务逻辑执行操作 实现 轮询 组件的最佳方法是什么 它需要每隔几分钟左右运行一次并检查数据 我过去见过
  • Android模拟器-dns-server使用

    我目前正在努力让 Android 模拟器使用在本地主机 127 0 0 1 上运行的自定义 DNS 服务器 到目前为止 我已经尝试了各种方法试图说服模拟器使用我的 DNS 服务器 但到目前为止还没有成功 最后 它总是归结为以下错误消息 WA
  • “not, and, or, not_eq..”是 C++ 标准的一部分吗? (为什么在代码中可以使用或避免它们?)

    所以它看起来像所有这些 http www cplusplus com reference clibrary ciso646 是c 中的关键字 我的问题是 这是 C 标准的一部分吗 我可以依赖它得到主要编译器的支持吗 我知道 gcc 确实支持
  • 如何在 Bash 中比较点分隔版本格式的两个字符串?

    有没有办法在 bash 上比较这些字符串 例如 2 4 5 and 2 8 and 2 4 5 1 这是一个纯 Bash 版本 不需要任何外部实用程序 bin bash vercomp if 1 2 then return 0 fi loc
  • 在 R 中将 CSV 读取为 data.frame

    我是 R 新手 正在尝试读取 csv 文档显示了一个函数read csv 但是 当我读取文件并检查变量的类型时 它会显示一个列表 文档将其显示为data frame 有人可以解释为什么会这样吗 到目前为止我的代码 mytable lt re
  • 移动设备放大 Google Apps 脚本

    我在 GAS 中制作了一个 400 像素宽的网络应用程序 我希望在加载时缩放以填充移动设备的屏幕 而不是只填充一半屏幕 尽管仍然使用固定的像素宽度 我尝试使用下面的视口代码但没有成功 Google 最近几个月解决了这个问题 并使用 addM
  • OpenSSL 静态库太大,有什么替代方法或方法可以减小其大小?

    我已经使用了 OpenSSL 1 0 的预构建静态库 但它使我的二进制文件太大 在发布模式下将其大小增加了约 800Kb 我不需要 OpenSSL 的大部分功能 例如 BIO 我使用自己的套接字 因此在代码中我只使用几个 SSL XXXXX
  • 如何防止ggplot2中的轴相交

    我正在使用 ggplot2 制作一些对数转换数据的线图 这些数据都有很大的值 在 10 6 和 10 8 之间 由于轴不是从零开始 我不想让它们在 原点 相交 以下是轴当前的样子 我更喜欢从基础图形中获得的东西 但我另外使用geom rib
  • 3D 中两个矩形之间的交集

    为了获得 3D 中两个矩形之间的交线 我将它们转换为平面 然后使用法线的叉积获得交线 然后尝试获得与矩形的每个线段的线交点 问题是这条线平行于三段 并且只与 NAN NAN NAN 中的一条相交 这是完全错误的 你能告诉我我的代码有什么问题
  • TabLayout 的选项卡未显示

    我有一个主要活动 它托管一个片段 该片段又托管一个 TabLayout 带有 ViewPager 显示选项卡栏 但不显示选项卡本身 这是我在主要活动中用于显示主机片段的代码 Fragment fragment new BMITabsFrag