2015-07-02 1 views
4

Я использую ViewPager и TabLayout. Если вкладки могут быть размещены на tabMode дисплее они должны быть:Различные tabMode для TabLayout

app:tabMode="fixed" 

еще

app:tabMode="scrollable" 

Как я могу это сделать?

+4

, что ваш вопрос? – ticofab

+0

Возможный дублированный вопрос: http://stackoverflow.com/questions/30616474/android-support-design-tablayout-gravity-center-and-mode-scrollable – issamux

+0

Возможный ответ: http://stackoverflow.com/a/31363030/3187366 – issamux

ответ

1

Я din't получить ваш вопрос, но я могу помочь вам, если рассчитывать Вкладки статический или фиксированный (вы знаете, количество вкладок), то app:tabMode="fixed" если рассчитывать вкладки являются динамические (данные, поступающие с кормом) затем app:tabMode="scrollable"

0

я не получил свой вопрос, но ответ, данный в андроиде документации

, когда вы должны использовать приложение: tabMode = «фиксированный» или приложение: tabMode = «прокручивать»

  1. tabMode = «fixed» Фиксированные вкладки одновременно отображают все вкладки и лучше всего используются с контентом, который выигрывает от быстрого поворота между вкладками.

  2. app: tabMode = "прокручиваемый" Прокручиваемые вкладки отображают поднабор вкладок в любой момент и могут содержать более длинные метки ярлыков и большее количество вкладок. Они лучше всего используются для просмотра контекстов в сенсорных интерфейсах, когда пользователям не нужно напрямую сравнивать метки вкладок. Этот режим обычно используется с ViewPager.

0

Если проблема заключается в том, что для определенных конфигураций экрана (например, небольшие экраны, портрет конфигурации и т.д.) вкладки должны быть прокручивать, потому что они не соответствуют экрану, а для другого экрана конфигурации/размеры бумаги количество вкладок идеально вписывается в экран, вы можете просто использовать квалификаторы ресурсов для определения своих вкладок по-разному для разных конфигураций/размеров экрана.

Например, представьте, что ваши вкладки не вписываются в портрет, но подходят для пейзажа. Следовательно, можно хотеть, чтобы вкладки были 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" /> 

Надеюсь, это то, что вы ищете.

1

В макете 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); 
     } 
    }