5

Bir uygulamada destek eylem çubuğu kullanıyorum ve 2 aygıt Nexus S ve Nexus 7'de test ediyorum ve sekme çubuğu genişliği, Nexus S sekme çubuğu dolgu genişliği ile ilgili farklı sonuçları nexus 7 kullanırken buldum sekme çubuğu sol tarafta biraz boşluk bırakın.eylem çubuğu sekmeleri android ekranı doldurmuyor

public class MainActivity extends ActionBarActivity implements ActionBar.TabListener { 

    ActionBar bar; 
    ViewPager pager; 
    TabsAdapter adapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     pager = (ViewPager) findViewById(R.id.pager); 
     bar = getSupportActionBar(); 

     adapter = new TabsAdapter(getSupportFragmentManager()); 

     bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

     bar.setHomeButtonEnabled(false); 

     pager.setAdapter(adapter); 
     pager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 

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

     Tab hometab = bar.newTab(); 
     hometab.setText("Home"); 
     hometab.setTabListener(this); 
     bar.addTab(hometab); 
     Tab cameratab = bar.newTab(); 
     cameratab.setText("Camera"); 
     cameratab.setTabListener(this); 
     bar.addTab(cameratab); 
     Tab exploretab = bar.newTab(); 
     exploretab.setText("Explore"); 
     exploretab.setTabListener(this); 
     bar.addTab(exploretab); 

     bar.show(); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu items for use in the action bar 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.main, menu); 
     return super.onCreateOptionsMenu(menu); 
    } 

    @Override 
    public void onTabReselected(Tab arg0, FragmentTransaction arg1) { 
      // TODO Auto-generated method stub 
    } 

    @Override 
    public void onTabSelected(Tab arg0, FragmentTransaction arg1) { 
     // TODO Auto-generated method stub 
     pager.setCurrentItem(arg0.getPosition()); 
    } 

    @Override 
    public void onTabUnselected(Tab arg0, FragmentTransaction arg1) { 
     // TODO Auto-generated method stub 
    } 
: Üst tarzı

<activity 
    android:name=".MainActivity" 
    android:screenOrientation="portrait" 
    android:theme="@style/Theme.AppCompat.Light" > 

<android.support.v4.view.ViewPager                          
    android:id="@+id/pager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

Sınıf Manifest'te

Aktivite Theme.AppCompat.Light gerektiğinden i Eylem çubuğunu etkilemez destek Eylem çubuğu, uygulayarak özel temalar tarafından sağlanan varsayılan tema kullanılan

} burada

ekran görüntüleri ise

enter image description here

enter image description here

+1

bazı örnek kodlar gönderir misiniz? Aktiviteniz ve düzeniniz xml kodu? – athor

+0

Buraya gönderme yapmak için bir cevabım yok, Theme.AppCompat.Light kaynak kodu android-support-v7-appcompat projesinde themes.xml dosyasında mevcuttur. Oraya bir göz atın, her iki cihaz için de farklı olduğunu görmek için değiştirin ve belki de bu sorunun nedenini daha iyi anlayabilirsiniz. – omermuhammed

+0

@omermuhammed Ben bu xml değiştirdim ama uygulama sherlock actionbar veya varsayılan actionbar kullanarak –

cevap

2
tablets.Put için

kullanın Yüksek Çözünürlüklü görüntüleri bu çözüm works.Then gelmez .Eğer çekilebilir-xxhdpi klasörünün içindeki

Alternatif Yöntem:

Adımlar

1: 3 Ayrı düzenler oluşturun - Ana Sayfa sekmesi için, biri kamera sekmesi ve keşif sekmesi için.

2: Layout Inflater'ı kullanarak, bu düzeni ayrı olarak bu sekmelere ekleyebilirsiniz.

Örnek Kod:

public class MyActivities extends SherlockFragmentActivity { 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    setTheme(R.style.customActionBarTabStyle); 
    super.onCreate(savedInstanceState); 

} 

public static class TabListener<T extends Fragment> implements 
     ActionBar.TabListener { 
    private Fragment mFragment; 
    private final Activity mActivity; 
    private final String mTag; 
    private final Class<T> mClass; 

    /** 
    * Constructor used each time a new tab is created. 
    * 
    * @param activity 
    *   The host Activity, used to instantiate the fragment 
    * @param tag 
    *   The identifier tag for the fragment 
    * @param clz 
    *   The fragment's Class, used to instantiate the fragment 
    */ 
    public TabListener(Activity activity, String tag, Class<T> clz) { 
     mActivity = activity; 
     mTag = tag; 
     mClass = clz; 

    } 

    public void onTabSelected(Tab tab, FragmentTransaction ignoredFt) { 
     FragmentManager fragMgr = ((FragmentActivity) mActivity) 
       .getSupportFragmentManager(); 
     FragmentTransaction ft = fragMgr.beginTransaction(); 
     mFragment = Fragment.instantiate(mActivity, mClass.getName()); 
     // ft.add(android.R.id.content, mFragment, mTag); 
     ft.add(R.id.relMiddle, mFragment, mTag); 
     ft.addToBackStack(mTag); 
     ft.commit(); 

    } 

    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) { 
     if (mFragment != null) { 
      FragmentManager man = ((FragmentActivity) mActivity) 
        .getSupportFragmentManager(); 
      if (man.getBackStackEntryCount() > 0) 
       man.popBackStack(man.getBackStackEntryAt(0).getName(), 
         FragmentManager.POP_BACK_STACK_INCLUSIVE); 
      ft.detach(mFragment); 
     } 
    } 

    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) { 
     // User selected the already selected tab. Usually do nothing. 
    } 
} 

public void settings() { 
    actionbar = getSupportActionBar(); 
    actionbar.setDisplayShowTitleEnabled(false); 
    getSupportActionBar().setCustomView(R.layout.myactivities_header); 
    getSupportActionBar().setDisplayShowCustomEnabled(true); 
    actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

    /* 
    * For showing custom top layout in actionbar 
    * 
    * Build verson is checking for Api <3.0 
    */ 
    View homeIcon = findViewById(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ? android.R.id.home 
      : R.id.abs__home); 
    ((View) homeIcon.getParent()).setVisibility(View.GONE); 

    mTabsAdapter = new TabsAdapter(this, actionbar, mViewPager); 

    /* 
    * Use Customview for TABS IN FULL WIDTH 
    * 
    * 1: Note: use imageview with full width and full height. 
    * 
    * 2: Note : If we use seticon instead setContentview,Tabs may not show 
    * in full width /height 
    */ 

    mTabsAdapter.addTab(
      actionbar.newTab().setText(" ") 
        .setCustomView(R.layout.cus_home_tab), 
      Home.class, null); 
    mTabsAdapter.addTab(
      actionbar.newTab().setText("") 
        .setCustomView(R.layout.cus_camera_tab), 
      Camera.class, null); 
    mTabsAdapter.addTab(
      actionbar.newTab().setText("") 
        .setCustomView(R.layout.cus_explore_tab), 
      Rxplore.class, null); 

} 

public static class TabsAdapter extends FragmentPagerAdapter implements 
     ViewPager.OnPageChangeListener, ActionBar.TabListener { 
    private final Context mContext; 
    private final ActionBar mBar; 
    private final ViewPager mViewPager; 
    private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>(); 

    static final class TabInfo { 
     private final Class<?> clss; 
     private final Bundle args; 

     TabInfo(Class<?> _class, Bundle _args) { 
      clss = _class; 
      args = _args; 
     } 
    } 

    public TabsAdapter(FragmentActivity activity, ActionBar bar, 
      ViewPager pager) { 
     super(activity.getSupportFragmentManager()); 
     mContext = activity; 
     mBar = bar; 
     mViewPager = pager; 
     mViewPager.setAdapter(this); 
     mViewPager.setOnPageChangeListener(this); 

     System.out.println("inside tab adapter"); 
    } 

    public void addTab(ActionBar.Tab tab, Class<? extends Fragment> clss, 
      Bundle args) { 
     TabInfo info = new TabInfo(clss, args); 
     tab.setTag(info); 
     tab.setTabListener(this); 
     mTabs.add(info); 
     mBar.addTab(tab); 
     notifyDataSetChanged(); 
    } 

    @Override 
    public int getCount() { 
     return mTabs.size(); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     TabInfo info = mTabs.get(position); 
     return Fragment.instantiate(mContext, info.clss.getName(), 
       info.args); 
    } 

    @Override 
    public void onPageScrolled(int position, float positionOffset, 
      int positionOffsetPixels) { 
    } 

    @Override 
    public void onPageSelected(int position) { 
     mBar.setSelectedNavigationItem(position); 
    } 

    @Override 
    public void onPageScrollStateChanged(int state) { 
    } 

    @Override 
    public void onTabSelected(Tab tab, FragmentTransaction ft) { 
     Object tag = tab.getTag(); 
     //System.out.println("Tabs Size is " + mTabs.size()); 
     for (int i = 0; i < mTabs.size(); i++) { 
      if (mTabs.get(i) == tag) { 
       mViewPager.setCurrentItem(i); 
      } 
     } 
    } 

    @Override 
    public void onTabUnselected(Tab tab, FragmentTransaction ft) { 

    } 

    @Override 
    public void onTabReselected(Tab tab, FragmentTransaction ft) { 

    } 
} 


} 
+0

U r etkisi olmaz? –

+0

varsayılan destek eylem çubuğunu kullanarak 2.3 –

+0

@ KP_ cus_home_tab, cus_camera_tab ve cus_explore_tab kodlarını paylaşabilirsiniz – Anuj

İlgili konular