我正在使用 ViewPager 和 TabLayout。如果选项卡可以放置在显示 tabMode 上,它们必须是:
app:tabMode="fixed"
别的
app:tabMode="scrollable"
我怎样才能做到这一点?
我正在使用 ViewPager 和 TabLayout。如果选项卡可以放置在显示 tabMode 上,它们必须是:
app:tabMode="fixed"
别的
app:tabMode="scrollable"
我怎样才能做到这一点?
我不明白你的问题,但我可以帮助你,如果标签计数是静态的或固定的(你知道标签的数量)那么app:tabMode="fixed"
如果标签计数是动态的(数据来自提要)那么app:tabMode="scrollable"
我们可以在 TabLayout 中使用两种 tabMode:
app:tabMode="fixed"
app:tabMode="scrollable"
并且以编程方式就像
tabLayout.setTabMode(TabLayout. MODE_FIXED);
tabLayout.setTabMode(TabLayout. MODE_SCROLLABLE);
以上与 MODE_SCROLLABLE 相同
要了解 TabLayout 模式,您可以参考以下链接 https://developer.android.com/reference/android/support/design/widget/TabLayout
在xml布局中,我声明
固定的
在片段java类中,我做了这个:
if (tabLayout == null) {
tabLayout = (TabLayout) view.findViewById(R.id.tabs);
DisplayMetrics metrics = new DisplayMetrics();
WindowManager wm = (WindowManager) view.getContext().getSystemService(Context.WINDOW_SERVICE);
wm.getDefaultDisplay().getMetrics(metrics);
int width = metrics.widthPixels;
int height = metrics.heightPixels;
double wi = (double) width / (double) metrics.xdpi;
double hi = (double) height / (double) metrics.ydpi;
double x = Math.pow(wi, 2);
double y = Math.pow(hi, 2);
double screenInches = Math.sqrt(x + y);
if (screenInches < 4) {
tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
}
}
如果问题是对于某些屏幕配置(例如小屏幕、纵向配置等),选项卡需要可滚动,因为它们不适合屏幕,而对于其他屏幕配置/尺寸,选项卡的数量完全适合屏幕,您可以只使用资源限定符为不同的屏幕配置/大小定义不同的选项卡。
例如,假设您的标签不适合纵向但适合横向。因此,人们可能希望标签是scrollable
纵向和fixed
横向的。
res/layout/tabs.xml
将包含TablLayout
在肖像中使用:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.TabLayout xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/tabs"
app:tabMode="scrollable"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
并将res/layout-land/tabs.xml
包含TabLayout
在景观中使用的:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.TabLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
然后在包含选项卡的布局中,像这样包含它:
<include layout="@layout/tabs" />
希望这就是你要找的。
我没有收到您的问题,但在 android 文档中给出了答案
当你应该使用 app:tabMode="fixed" 或 app:tabMode="scrollable"
tabMode="fixed" 固定选项卡同时显示所有选项卡,最适合用于受益于选项卡之间快速旋转的内容。
app:tabMode="scrollable" 可滚动选项卡在任何给定时刻显示选项卡的子集,并且可以包含更长的选项卡标签和更多的选项卡。当用户不需要直接比较选项卡标签时,它们最适合用于浏览触摸界面中的上下文。此模式通常与 ViewPager 一起使用。