2013-11-21 10 views
5

ActionBar kullanıyorum ve gezinme sekmelerinde özel bir View ayarlamak istiyorum. ActionBar gezinme sekmelerinde özel bir Görünüm nasıl ayarlanır ve sekmeler yüksekliğe uyarlanır?

sekmelerin yüksekliği

sabit gibi görünüyor ve benim özel View büyüktür, bu yüzden uymuyor.

Ben aşağıda gösterildiği gibi stilini özelleştirmek çalışıyorum, ancak sekmeler yüksek yapmaz ...

nasıl sekmelerin yüksekliği benim özel View boyutuna adapte olabilir?

(Ben benim durumumda Tab 'ın setIcon ve setTitle kullanabilirsiniz biliyorum, ama yine de özel bir View kullanmak istiyorum)

enter image description here

styles.xml

<resources> 
    <style name="AppBaseTheme" parent="android:Theme.Holo"> 
    </style> 
    <style name="AppTheme" parent="AppBaseTheme"> 
     <item name="android:actionBarTabStyle">@style/MyTabStyle</item> 
    </style> 

    <style name="MyTabStyle" parent="@android:Widget.ActionBar.TabView"> 
     <item name="android:height">85dp</item> 
    </style> 
</resources> 

custom_tab.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:gravity="center_horizontal" > 

    <ImageView 
     android:id="@+id/icon" 
     android:layout_width="60dp" 
     android:layout_height="60dp" 
     android:scaleType="centerInside" /> 

    <TextView 
     android:id="@+id/title" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal" 
     android:maxLines="1" /> 

</LinearLayout> 

MainActivity.java

public class MainActivity extends FragmentActivity implements 
ActionBar.TabListener { 

    SectionsPagerAdapter mSectionsPagerAdapter; 

    ViewPager mViewPager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     // Set up the action bar. 
     final ActionBar actionBar = getActionBar(); 
     actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

     // Create the adapter that will return a fragment for each of the three 
     // primary sections of the app. 
     mSectionsPagerAdapter = new SectionsPagerAdapter(
       getSupportFragmentManager()); 

     // Set up the ViewPager with the sections adapter. 
     mViewPager = (ViewPager) findViewById(R.id.pager); 
     mViewPager.setAdapter(mSectionsPagerAdapter); 

     // When swiping between different sections, select the corresponding 
     // tab. We can also use ActionBar.Tab#select() to do this if we have 
     // a reference to the Tab. 
     mViewPager 
     .setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 
      @Override 
      public void onPageSelected(int position) { 
       actionBar.setSelectedNavigationItem(position); 
      } 
     }); 

     // For each of the sections in the app, add a tab to the action bar. 
     for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) { 
      // Create a tab with text corresponding to the page title defined by 
      // the adapter. Also specify this Activity object, which implements 
      // the TabListener interface, as the callback (listener) for when 
      // this tab is selected. 

      LinearLayout view = (LinearLayout) getLayoutInflater().inflate(R.layout.custom_tab, null); 

      ImageView icon = (ImageView) view.findViewById(R.id.icon); 
      icon.setImageResource(R.drawable.about); 

      TextView title = (TextView) view.findViewById(R.id.title); 
      title.setText("About"); 


      actionBar.addTab(actionBar.newTab() 
        //.setText(mSectionsPagerAdapter.getPageTitle(i)) 
        .setCustomView(view) 
        .setTabListener(this)); 
     } 
    } 

    /*****/ 
} 

cevap

0

bu üstte İşlem Çubuğu tutmak, ama neden bilmiyorum!

ActionBar.DISPLAY_SHOW_HOME 

üst içinde İşlem Çubuğu kalış süresi:

actionbar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME); 

sekme İşlem Çubuğu üstünde gidin:

actionbar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM 
0

afaik, eylem yüksekliğini değiştiremezsiniz çubuk sekmeleri. Ancak, bir ViewHager ile birlikte bir TabHost kullanarak istenilen davranışı elde edebilirsiniz. Bu şekilde size TabIndicators için özel görünümler ekleyebilir ve ayrıca hızlıca kaydırmak özelliğe sahip olabilir.