Как мы можем обойти пустой заголовок в PagerTitleStrip и PagerTabStrip?

Существует проблема с PagerTitleStrip и PagerTabStrip с support-v4 (версия 23.0.0).

Титульный вид ViewPager когда используешь PagerTitleStrip или же PagerTabStrip и версия 23.0.0 (для поддержки Marshmallow/Android 6.0) support-v4 библиотека не отображает правильно.

Проблема отслежена и запланирована на будущее издание по адресу: https://code.google.com/p/android/issues/detail?id=183127 https://code.google.com/p/android/issues/detail?id=184715

Обновление: теперь это исправлено в 23.1.0.

4 ответа

Решение

Эта проблема была исправлена ​​в версии 23.1.0

com.android.support:support-v4:23.1.0

Промежуточное решение в ожидании исправленной версии состоит в том, чтобы использовать копию последней известной исправной версии этих классов (22.1.0) вместо той, которая поставляется в комплекте с библиотекой поддержки.

Перетащите вложенные файлы в ваш проект и настройте ViewPager с этими классами вместо.

Примечание. Не изменяйте имя пакета, так как оно основано на классах, защищенных пакетами, в библиотеке поддержки.

Пример использования нашего "нового" PagerTabStrip учебный класс:

      <android.support.v4.view.ViewPager
          xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="wrap_content">   
          <android.support.v4.view.PagerTabStripV22
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:layout_gravity="top"/>   
      </android.support.v4.view.ViewPager>

PagerTitleStripV22.java

PagerTabStripV22.java

Мой "комментарий" как ответ, поэтому он не упущен из виду.

Во-первых, когда вы загружаете файлы по ссылкам, они не будут иметь правильных имен файлов, т.е. в файлах.java будет отсутствовать буква "V" для "V22", поэтому вам нужно будет переименовать оба файла в "PagerTitleStripV22.java". и "PagerTabStripV22.java". Затем следуйте этим инструкциям, опубликованным кем-то другим: создайте пакет "android.support.v4.view" в своем проекте и поместите вложенные файлы #31 в свой проект внутри созданного пакета и измените android.support.v4.view.PagerTabStrip на android.support.v4.view.PagerTabStripV22 в вашем файле макета.

Простой обходной путь для решения этой проблемы.

//after setting the adapter
viewPager.post(new Runnable() {
    @Override
    public void run() {
        viewPager.setCurrentItem(1, false);
        viewPager.setCurrentItem(0, false);
        viewPager.postInvalidate();
    }
});

Прокомментируйте приведенный выше код, как только исправление будет выпущено.

Другие вопросы по тегам