14

Tablet boyutlu bir yatay düzende çift bölüme sahibim ve parçaları kullanıyorum.Seçilen TabPageIndicator'ı vurgulayın veya altını çizin

Sol tarafta bir liste görünümüne sahip bir parçam var. Öğe listesinden birinde bir tıklama olduğunda, doğru parça detayı yükler. sağ (detay) fragmanının düzende

bir com.viewpagerindicator.TabPageIndicator ve ViewPager 2 elemanları yükleyecektir bir android.support.v4.view.ViewPager. vardır ve her biri kendi com.viewpagerindicator.TabPageIndicator sahiptir. Seçili sekmeyi vurgulamaya veya vurgulamaya çalışıyorum ama yapamadım.

Sana bir tavsiyede :)

+0

, sorunuzu güncelleştirmek ve burada bazı kod koyunuz. – Wh1T3h4Ck5

cevap

22

Varsayılan olarak TabPageIndicator herhangi bir stil geçerli değildir umuyoruz. application etiketi veya manifest.xml

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

uygun activity etiketi ya aşağıdaki satırı ekleyin ViewPagerIndicator gelen varsayılan stili etkinleştirmek için Ardından aşağıdaki içeriği

<?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> 

ile projenize bir res\values\styles.xml dosya eklemek Uygulamam için android ışık temasını kullanıyorum, ancak bunu şu anda kullandığınız temaya değiştirmek isteyebilirsiniz.

böyle bir şey için styles.xml dosyayı değiştirmek varsayılan VPI tarzı değişiklik yapmak isterseniz: ayarlar, yukarıdaki tam TabPageIndicactor için varsayılan VPI stili olarak aynı olduğunu

<?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> 

Note, böylece hala istediğiniz değişiklikleri yapmak zorundasınız.

+0

Bu beni deli ediyordu, teşekkürler! – HGPB

+0

Merhaba, bildirim çubuğunda, hem eylem çubuğu hem de android: theme = "@ style/Theme.MyTheme" uygulamasını nasıl uygulayabiliyorum? – NPE

+1

@StackOverflowError Bu sorunun yanıtlandığını düşünüyorum (burada) (http://stackoverflow.com/q/9737103/741249) ve [burada] (http://stackoverflow.com/q/12267660/741249) – THelper

1

Sadece iki kitaplık kullanın 1) Sherlock eylem çubuğu 2) ViewPageIndicator ve uygulama sekmesiPageIndicator, varsayılan sekmeyi ve highliget sekmesi için alt çizgi sağlamasını sağlar. Alt çizgi rengini değiştirmek istediğinizde, alt çizgide kullanılan çekilebilir 9. Yama resimlerini değiştirmeniz gerekir.

İşte

XML görünümü örnek örnek kod

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

Fragment Kodu

 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); 
İlgili konular