PagerSlidingTabStrip выбранная строка вкладки вверху
Я использую библиотеку PagerSlidingTabStrip для динамического количества заголовков в ViewPager. Это отличная библиотека, простая в использовании, но мне нужно немного ее настроить.
Мой заголовок PagerSlidingTabStrip находится в нижней части экрана, поэтому мне нужны "подчеркивание полной ширины" и "индикатор строки выделенного элемента" в верхней части компонента PagerSlidingTabStrip.
После некоторых тестов я наконец-то получил "подчеркивание полной ширины" в правильном положении, используя знакомый LinearLayout, например:
<LinearLayout
android:id="@+id/tabs_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_alignParentBottom="true">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="2dp"
android:orientation="vertical"
android:background="@color/lfp_yellow"/>
<com.astuetz.PagerSlidingTabStrip
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="48dip"
app:pstsDividerColor="@android:color/transparent"
app:pstsIndicatorColor="@color/light_yellow"
app:pstsIndicatorHeight="4px"
app:pstsShouldExpand="true"/>
</LinearLayout>
Но у меня нет формы для размещения "индикатора строки выбранного элемента" вверху. Я пытался изменить фон выделенного элемента с помощью рисования с линией вверху, но не работает:(
Есть идеи?
Большое спасибо.
1 ответ
Наконец-то я нашел решение, но нужно внести некоторые изменения в библиотечный код.
Прежде всего, нам нужно добавить код библиотеки в наш проект, а НЕ внешнюю зависимость, как обычно:
dependencies {
compile 'com.jakewharton:butterknife:6.0.0'
}
Для этого есть действительно полезное руководство по импорту проекта библиотеки в нашем проекте Android Studio. Более того, в этом уроке она использует библиотеку PagerSlidingTabStrip в качестве примера! (идеально!)
Как добавить проект библиотеки в Android Studio?
После этого нам нужно только открыть файл PagerSlidingTabStrip.java и перейти к функции onDraw.
Мы должны изменить эту строку:
canvas.drawRect(lineLeft, height - indicatorHeight, lineRight, height, rectPaint);
Для этого:
canvas.drawRect(lineLeft, 0, lineRight, indicatorHeight , rectPaint);
И это сделано!
С другой стороны, если вы заинтересованы в модификации этой библиотеки, возможно, вы найдете эту модификацию полезной и для вас (возможно, она будет включена в основную ветку библиотеки в будущем):
https://github.com/astuetz/PagerSlidingTabStrip/pull/62/files?short_path=04c6e90
Надеюсь это кому-нибудь пригодится:)