Выделить или подчеркнуть выбранную вкладку TabPageIndicator - программирование

Выделить или подчеркнуть выбранную вкладку TabPageIndicator

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

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

В макете правильного фрагмента (детали) есть com.viewpagerindicator.TabPageIndicator и android.support.v4.view.ViewPager. ViewPager будет загружать 2 элемента, каждый из которых имеет com.viewpagerindicator.TabPageIndicator. Я пытаюсь выделить или подчеркнуть выбранную вкладку, но я не сделал этого.

Надеюсь, у вас есть совет:)

4b9b3361

Ответ 1

По умолчанию TabPageIndicator не применяет никакого стиля. Чтобы включить стиль по умолчанию из ViewPagerIndicator, добавьте следующую строку в тег application или соответствующий тег activity в manifest.xml

android:theme="@style/Theme.MyTheme"

Затем добавьте файл res\values\styles.xml в ваш проект со следующим содержимым

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Theme.MyTheme" parent="@android:style/Theme.Light">
        <item name="vpiTabPageIndicatorStyle">@style/Widget.TabPageIndicator</item>
    </style>  
</resources>  

Я использую тему темы для Android для моего приложения, но вы можете изменить ее на тему, которую вы сейчас используете.

Если вы хотите внести изменения в изменение стиля VPI по умолчанию, файл styles.xml будет выглядеть примерно так:

<?xml version="1.0" encoding="utf-8"?>
<resources>

  <style name="Theme.MyTheme" parent="@android:style/Theme.Light">
    <item name="vpiTabPageIndicatorStyle">@style/MyTabPageIndicator</item>
  </style>  

  <style name="MyTabPageIndicator" parent="Widget.TabPageIndicator">
    <item name="android:gravity">center</item>
    <item name="android:background">@drawable/vpi__tab_indicator</item>
    <item name="android:paddingLeft">22dip</item>
    <item name="android:paddingRight">22dip</item>
    <item name="android:paddingTop">12dp</item>
    <item name="android:paddingBottom">12dp</item>
    <item name="android:textAppearance">@style/MyTabPageIndicator.Text</item>
    <item name="android:textSize">12sp</item>
    <item name="android:maxLines">1</item>
  </style>

  <style name="MyTabPageIndicator.Text" parent="TextAppearance.TabPageIndicator">
    <item name="android:textStyle">bold</item>
    <item name="android:textColor">@color/vpi__dark_theme</item>
  </style>

</resources>

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

Ответ 2

Просто используйте две библиотеки. 1) Панель действий Шерлока. 2) ViewPageIndicator и реализуйте представление tabPageIndicator, оно предоставит вам вкладку по умолчанию, а вкладка highliget - подчеркнуть. ЕСЛИ вы хотите изменить цвет подчеркивания, чем вам нужно изменить вырезаемые 9-ые изображения патчей, которые использовались в underlinbe.

Вот пример кода

Пример представления XML               

               <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical" >

        <com.viewpagerindicator.TabPageIndicator
            android:id="@+id/indicator"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@color/lock_background_greeen"
           />

        <android.support.v4.view.ViewPager
            android:id="@+id/pager"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="1" />
    </LinearLayout>
</FrameLayout>

Код фрагмента

        final FragmentPagerAdapter adapter = new  FragmentChildPageAdapter(getChildFragmentManager());//getActivity().getSupportFragmentManager()

    final ViewPager pager = (ViewPager) v.findViewById(R.id.pager);
    pager.setAdapter(adapter);

    final TabPageIndicator indicator = (TabPageIndicator) v.findViewById(R.id.indicator);
    indicator.setViewPager(pager);