ViewPagerとTabLayoutを使用しています。タブをディスプレイtabModeに配置できる場合は、次のようにする必要があります。
app:tabMode="fixed"
else
app:tabMode="scrollable"
これどうやってするの?
質問はありませんが、タブ数が静的または固定(タブの数がわかっている)の場合は、app:tabMode="fixed"
タブ数が動的(フィードからのデータ)の場合、app:tabMode="scrollable"
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" />
これがあなたが探しているものであることを願っています。
TabLayoutで使用できるtabModeは2つあります。
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
質問はありませんでしたが、Androidドキュメント
app:tabMode = "fixed"またはapp:tabMode = "scrollable"を使用する必要がある場合
tabMode = "fixed"固定タブはすべてのタブを同時に表示し、タブ間のクイックピボットの恩恵を受けるコンテンツで最適に使用されます。
app:tabMode = "scrollable"スクロール可能なタブは、任意の時点でタブのサブセットを表示し、より長いタブラベルとより多くのタブを含めることができます。ユーザーがタブラベルを直接比較する必要がない場合に、タッチインターフェイスでコンテキストを参照するのに最適です。このモードは通常、ViewPagerで使用されます。