Удалить разрыв строки в TabLayout

Я просто добавил новый компонент TabLayout в свое приложение. Как вы можете знать, есть два разных режима для вкладок app:tabMode="scrollable" и app:tabMode="fixed" .

Когда я использую app:tabMode="fixed" я получаю следующий результат:

введите описание изображения здесь

В левой и правой части поля нет поля / дополнения, но текст завернут.

Но когда я использую app:tabMode="scrollable" я получаю следующий результат:

введите описание изображения здесь

Текст не обернут, но здесь есть странное поле с правой стороны, и я не могу избавиться от него.

Я также попытался установить tabGravity для любого app:tabGravity="center" или app:tabGravity="fill" но не получило никаких изменений.

Было бы хорошо, если бы кто-нибудь из вас, умные парни и девочки, получил решение для меня.

Приветствия, Лукас

    Одним из решений здесь является раздувание пользовательского макета для каждой вкладки, что даст вам больше контроля над появлением каждой вкладки. Это делается с помощью метода setCustomView () .

    Обратите внимание, что он будет выглядеть по-разному на разных разрешениях экрана.

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

    Один из подходов заключался бы в том, чтобы размер шрифта был как можно большим, без обрезания на каждом размере экрана.

    У меня есть простой пример работы, который ограничивает текст на каждой вкладке одной строкой, однако в этом простом примере он также заставляет длинный текст на боковых вкладках эллипсизировать без изменения размера шрифта. Следующим шагом будет выяснить оптимальный размер шрифта для каждого размера экрана и создать для каждой отдельной макету xml.

    Вот файл custom_tab.xml с android:singleLine="true" :

         

    Вот макет для MainActivity:

          

    Вот код действия, который включает FragmentPagerAdapter:

     public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); // Get the ViewPager and set it's PagerAdapter so that it can display items ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager(), MainActivity.this); viewPager.setAdapter(pagerAdapter); // Give the TabLayout the ViewPager TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); tabLayout.setupWithViewPager(viewPager); // Iterate over all tabs and set the custom view for (int i = 0; i < tabLayout.getTabCount(); i++) { TabLayout.Tab tab = tabLayout.getTabAt(i); tab.setCustomView(pagerAdapter.getTabView(i)); } } class PagerAdapter extends FragmentPagerAdapter { String tabTitles[] = new String[] { "Aufzeichnung", "Berichte", "Neue Aufgabe", }; Context context; public PagerAdapter(FragmentManager fm, Context context) { super(fm); this.context = context; } @Override public int getCount() { return tabTitles.length; } @Override public Fragment getItem(int position) { switch (position) { case 0: return new BlankFragment(); case 1: return new BlankFragment(); case 2: return new BlankFragment(); } return null; } @Override public CharSequence getPageTitle(int position) { // Generate title based on item position return tabTitles[position]; } public View getTabView(int position) { View tab = LayoutInflater.from(MainActivity.this).inflate(R.layout.custom_tab, null); TextView tv = (TextView) tab.findViewById(R.id.custom_text); tv.setText(tabTitles[position]); return tab; } } } 

    И вот результат с кодом выше:

    введите описание изображения здесь

    Обратите внимание: если вы удалите android:singleLine="true" , он выглядит так, как это выглядит в вашем вопросе:

    введите описание изображения здесь

    Вот быстрый взлом, намного короче, чем использование setCustomView() : используйте атрибут android:theme на TabLayout :

      

    Затем в ваших темах XML:

      

    Мы должны сделать это так, потому что, к сожалению, атрибут android:singleLine игнорируется в app:tabTextAppearance установленном в TabLayout. app:tabTextAppearance действительно полезно только для изменения размера текста.

    Отображение «…» в названиях таблеток не принесет хорошего опыта пользовательского интерфейса. Я предлагаю вам установить прокрутку tabmode и позволить заголовкам таблеток взять столько места, сколько захотят.

       

    Если это опция, вы можете центрировать вкладки с помощью RelativeLayout и установкой android: layout_centerHorizontal = “true”

    Это даст вам равную маржу как с левой, так и с правой стороны.

    например

         

    В вашем макете XML, если вы используете TextView , используйте android:maxLines="1" или android:singleLine="true" Посмотрите, работает ли это. И если Not TextView то, пожалуйста, разместите свой xml здесь.

    Решил мою проблему, назначив стиль для приложения: tabTextAppearance

      

    стиль:

      

    Вы также можете установить textSize.

     float myTabLayoutSize = 360; if (DeviceInfo.getWidthDP(this) >= myTabLayoutSize ){ tabLayout.setTabMode(TabLayout.MODE_FIXED); } else { tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE); } 

    С помощью этого кода вы можете удалить заполнение по умолчанию. Для меня это работало, чтобы сделать несколько более длинные тексты в одной строке

      1  

    Отсюда: http://panavtec.me/playing-with-the-new-support-tablayout

    Interesting Posts

    Ошибка «Не удалось получить BatchedBridge, убедитесь, что ваш пакет правильно упакован» при запуске приложения

    Когда я должен инициализировать controller представления с помощью initWithNibName?

    Положительные эффекты переустановки ОС

    Связь между двумя отдельными настольными приложениями Java

    .NET Out Of Memory Exception – используется 1,3 ГБ, но установлено 16 ГБ

    Получить время последнего доступа к файлу

    Переместить все файлы из нескольких подпапок в родительскую папку

    Как узнать пароль Wi-Fi после его подключения?

    Селектор CSS, чтобы получить самый глубокий элемент определенного classа в дереве HTML.

    Добавить ярлык в SmcFanControl?

    Синхронизация удаленных папок в Linux

    Как использовать плагин joomla recaptcha для моего настраиваемого модуля

    Почему избыточная квалификация, поддерживаемая компилятором, является законной?

    Как использовать MDC с пулами streamов?

    Что такое PermSize в Java?

    Давайте будем гением компьютера.