2012-06-06 16 views
10

मैंने ViewPagerExtensions का उपयोग करके स्वाइप टैब बनाए हैं लेकिन इस बार मैं अपने ऐप में केवल एक लाइब्रेरी एक्शनबैरशेलॉक का उपयोग कर रहा हूं और मुझे नहीं पता कि Google Play store जैसे स्वाइप टैब कैसे बनाएं। यदि आप इसे पूरा करने में मेरी मदद कर सकते हैं, तो मैं आपके लिए बहुत आभारी हूं।SwipeyTabs - ActionBarSherlock लाइब्रेरी का उपयोग करके स्वाइप टैब कैसे बनाएं?

यह मेरा गतिविधि वर्ग

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     setTheme(SampleList.THEME); //Used for theme switching in samples 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.fragment_tabs); 
     mTabHost = (TabHost)findViewById(android.R.id.tabhost); 
     mTabHost.setup(); 

     mTabManager = new TabManager(this, mTabHost, R.id.realtabcontent); 

     mTabManager.addTab(mTabHost.newTabSpec("simple").setIndicator("Groups"),FragmentStackSupport.CountingFragment.class, null); 
     mTabManager.addTab(mTabHost.newTabSpec("contacts").setIndicator("Contacts"),LoaderCursorSupport.CursorLoaderListFragment.class, null); 
     mTabManager.addTab(mTabHost.newTabSpec("custom").setIndicator("Logs"),LoaderCustomSupport.AppListFragment.class, null); 
     mTabManager.addTab(mTabHost.newTabSpec("throttle").setIndicator("Gallery"),LoaderThrottleSupport.ThrottledLoaderListFragment.class, null); 

     if (savedInstanceState != null) { 
      mTabHost.setCurrentTabByTag(savedInstanceState.getString("tab")); 
     } 
    } 

In first image Top New Paid is the current screen title and other two are showing previous or next screen tile. How can i show previous and next screen title at corner with some fading effect like it.

में पहली छवि प्रमुख नए सशुल्क की onCreate विधि है वर्तमान स्क्रीन शीर्षक है और अन्य दो पिछले या अगले स्क्रीन टाइल दिखा रहे हैं। मैं इस तरह के कुछ लुप्तप्राय प्रभाव के साथ कोने पर पिछले और अगले स्क्रीन शीर्षक कैसे दिखा सकता हूं।

+1

मैं fragment_tabs.xml में TabWidget आसपास HorizontalScrollView का उपयोग करके स्क्रॉल टैब बनाया है। –

+0

उत्तर

9

आपको एक्शनबार टैब, एक टैब एडाप्टर और व्यूपेजर (स्क्रोलली बिट) का उपयोग करने की आवश्यकता है। यहां एक पूर्ण ट्यूटोरियल बनाया गया है: http://davidjkelley.net/?p=34 (केवल एबीएस आयात का उपयोग करें, मानक संगतता लाइब्रेरी वाले नहीं)। आप ViewPager उपयोग करने के लिए, और TabHost खाई चाहता हूँ

import java.util.ArrayList; 
import android.app.ActionBar; 
import android.app.ActionBar.Tab; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.view.MenuItem.OnMenuItemClickListener; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.app.FragmentTransaction; 
import android.support.v4.view.ViewPager; 
import android.support.v4.view.ViewPager.OnPageChangeListener; 
public class Polling extends FragmentActivity { 
private ViewPager mViewPager; 
private TabsAdapter mTabsAdapter; 
private final static String TAG = "21st Polling:"; 

public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 

mViewPager = new ViewPager(this); 
mViewPager.setId(R.id.pager); 
setContentView(mViewPager); 
final ActionBar bar = getActionBar(); 
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
bar.setDisplayShowTitleEnabled(false); 
bar.setDisplayShowHomeEnabled(false); 

mTabsAdapter = new TabsAdapter(this, mViewPager); 
mTabsAdapter.addTab(bar.newTab().setText(R.string.login), 
LoginFragment.class, null); 
mTabsAdapter.addTab(bar.newTab().setText(R.string.economics), 
EconFragment.class, null); 
mTabsAdapter.addTab(bar.newTab().setText(R.string.elections), 
ElectionsFragment.class, null); 
mTabsAdapter.addTab(bar.newTab().setText(R.string.politics), 
PoliticsFragment.class, null); 
mTabsAdapter.addTab(bar.newTab().setText(R.string.science), 
ScienceFragment.class, null); 
mTabsAdapter.addTab(bar.newTab().setText(R.string.finance), 
FinanceFragment.class, null); 
mTabsAdapter.addTab(bar.newTab().setText(R.string.religion), 
ReligionFragment.class, null); 
mTabsAdapter.addTab(bar.newTab().setText(R.string.military), 
MilitaryFragment.class, null); 
mTabsAdapter.addTab(bar.newTab().setText(R.string.international), 
InternationalFragment.class, null); 
} 

public static class TabsAdapter extends FragmentPagerAdapter 
    implements ActionBar.TabListener, ViewPager.OnPageChangeListener { 
     private final Context mContext; 
     private final ActionBar mActionBar; 
     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, ViewPager pager) { 
      super(activity.getSupportFragmentManager()); 
      mContext = activity; 
      mActionBar = activity.getActionBar(); 
      mViewPager = pager; 
      mViewPager.setAdapter(this); 
      mViewPager.setOnPageChangeListener(this); 
     } 

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


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

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


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


     public void onPageSelected(int position) { 
      mActionBar.setSelectedNavigationItem(position); 
     } 


     public void onPageScrollStateChanged(int state) { 
     } 


     public void onTabSelected(Tab tab, FragmentTransaction ft) { 
      mViewPager.setCurrentItem(tab.getPosition()); 
      Log.v(TAG, "clicked"); 
      Object tag = tab.getTag(); 
      for (int i=0; i<mTabs.size(); i++) { 
       if (mTabs.get(i) == tag) { 
        mViewPager.setCurrentItem(i); 
       } 
      } 
     } 

     public void onTabUnselected(Tab tab, FragmentTransaction ft) {} 

     public void onTabReselected(Tab tab, FragmentTransaction ft) {} 

     public void onTabReselected(Tab tab, android.app.FragmentTransaction ft) {} 

     @Override 
     public void onTabSelected(Tab tab, android.app.FragmentTransaction ft) {  
      Object tag = tab.getTag(); 
      for (int i=0; i<mTabs.size(); i++) { 
       if (mTabs.get(i) == tag) { 
        mViewPager.setCurrentItem(i); 
       } 
      } 
     } 

     public void onTabUnselected(Tab tab, android.app.FragmentTransaction ft) {} 
    } 
0

यदि आप एक्शनबैरशेलॉक का उपयोग कर रहे हैं, तो आप एक्शन बार टैब का बेहतर उपयोग करेंगे, TabHost नहीं। इसके अलावा मेरा मानना ​​है कि एबीएस में नमूने हैं जो दिखाते हैं कि यह कैसे करें।

0

:

यहाँ प्रासंगिक कोड के कुछ है।

http://developer.android.com/reference/android/support/v4/view/ViewPager.html

+0

@OP (chubbard नहीं), इस वह आधार कोड है जिसका मैंने आपके प्रश्न के प्रति अपनी प्रतिक्रिया में उपयोग किया था। वे बहुत समान हैं। संगतता पुस्तकालय की बजाय एबीएस आयात का उपयोग करना याद रखें! – Davek804

1

swipey टैब आप बात कर रहे हैं वास्तव में प्रत्येक पृष्ठ के लिए इसी शीर्षक टैब के साथ सिर्फ एक ViewPager है। यह डिफ़ॉल्ट रूप से एंड्रॉइड एसडीके में शामिल नहीं है, लेकिन आप अपने ViewPager में प्रत्येक टैब के लिए शीर्षक जोड़ने के लिए जेक व्हार्टन के ViewPagerIndicator का उपयोग कर सकते हैं। मेरा मानना ​​है कि ActionBarSherlock (जो जेक व्हार्टन द्वारा भी बनाया गया है) भी वही सटीक कार्यक्षमता प्रदान करता है।

1

मुझे एक समान समस्या थी लेकिन मैं किसी भी एक्शनबार को लागू नहीं कर रहा था। मैं इस ब्लॉग पर आया जिसने मुझे "स्वाइपीटैब्स" नामक एक कार्यान्वयन के लिए प्रेरित किया जिसका उपयोग केवल व्यूपेगर के साथ किया जाता है।

http://blog.peterkuterna.net/2011/09/viewpager-meets-swipey-tabs.html

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