Вопрос по android, viewpagerindicator, android-layout, android-viewpager, tabcontrol – Выделить или подчеркнуть выделенный TabPageIndicator

14

У меня есть двойная панель на альбомном размере размером с планшет, и ям с использованием фрагментов.

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

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

Я надеюсь, у вас есть несколько советов :)

Пожалуйста, обновите ваш вопрос и добавьте сюда код. Wh1T3h4Ck5

Ваш Ответ

2   ответа
23

не применять любой стиль. Чтобы включить стиль по умолчанию из 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 light для моего приложения, но вы можете поменять ее на тему, которую используете сейчас.

Если вы хотите внести изменения в стиль 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, поэтому вам все равно придется внести изменения,мне нравится

@ THelper, это действительно хороший ответ. Thirumalvalavan
@ THelper Я использовал ABC, так же? Yohanes AI
@ THelper хорошо, работает как шарм, спасибо за вашу помощь. Yohanes AI
Это сводило меня с ума, спасибо! HGPB
2

ageIndicator и реализуйте представление 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">
    </android.support.v4.view.viewpager></com.viewpagerindicator.tabpageindicator></linearlayout>

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

        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);

Похожие вопросы