我正在使用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中使用两种tabModes:
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
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);
}
}
<?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" />