5

में स्क्रीन भरने के लिए नहीं हैं। मुझे एप्लिकेशन में समर्थन एक्शन बार का उपयोग किया जाता है और 2 डिवाइस नेक्सस एस और नेक्सस 7 में परीक्षण किया जाता है और मुझे टैब बार चौड़ाई, नेक्सस एस टैब बार भरने चौड़ाई के संबंध में विभिन्न परिणाम मिलते हैं जबकि नेक्सस 7 टैब बार बाईं ओर कुछ जगह छोड़ दें। मैं समर्थन कार्रवाई बार, लागू करने के लिए कस्टम विषयों द्वारा प्रदान की डिफ़ॉल्ट थीम इस्तेमाल किया कार्रवाई बार प्रभावित नहीं करता, क्योंकि माता-पिता शैली प्रकट मेंएक्शन बार टैब एंड्रॉइड

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

कक्षा Theme.AppCompat.Light किया जाना चाहिए

गतिविधि:

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 
    } 

}

यहाँ

स्क्रीन शॉट्स है

enter image description here

enter image description here

+1

आप कुछ नमूना कोड पोस्ट कर सकते हैं? आपकी गतिविधि और लेआउट एक्सएमएल कोड? – athor

+0

मेरे पास कोई जवाब नहीं है, इसलिए यहां पोस्ट करें, Theme.AppCompat.Light स्रोत कोड थीम.एक्सएमएल फ़ाइल में एंड्रॉइड-सपोर्ट-वी 7-एपकोपेट प्रोजेक्ट में उपलब्ध है। वहां पर एक नज़र डालें, यह देखने के लिए संशोधित करें कि यह दोनों उपकरणों के लिए अलग कैसे है और शायद आप इस मुद्दे को उत्पन्न करने के बारे में बेहतर विचार प्राप्त कर सकते हैं। – omermuhammed

+0

@omermuhammed मैंने इन एक्सएमएल को बदल दिया लेकिन यह मेरे आवेदन –

उत्तर

2

tablets.Put के लिए उपयोग उच्च रिज़ॉल्यूशन चित्र कि drawable-xxhdpi फ़ोल्डर है.अगर इस समाधान works.Then नहीं है अंदर

वैकल्पिक विधि:

कदम

1: 3 अलग-अलग लेआउट बनाएं - होम टैब के लिए, एक कैमरा टैब के लिए और एक टैब को एक्सप्लोर करने के लिए।

2: लेआउट इन्फ्लेटर का उपयोग करके, आप इन टैबों को अलग-अलग लेआउट जोड़ सकते हैं।

नमूना कोड:

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

यूआर में शेरलॉक एक्शनबार या डिफ़ॉल्ट एक्शनबार का उपयोग नहीं कर रहा है? –

+0

2.3 –

+0

@KP_ के लिए डिफ़ॉल्ट समर्थन कार्रवाई बार का उपयोग कर आप cus_home_tab, cus_camera_tab और cus_explore_tab का कोड साझा कर सकते हैं – Anuj

संबंधित मुद्दे