SwipeyTabs – cómo crear pestañas de Swipey usando la biblioteca de ActionBarSherlock?

He creado pestañas swipey usando ViewPagerExtensions, pero esta vez estoy usando sólo una biblioteca ActionBarSherlock en mi aplicación y no sé cómo crear pestañas swipey como google play store. Si me puede ayudar a hacerlo, estaría muy agradecido con usted.

Este es el método onCreate de mi clase de actividad

@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")); } } 

En la primera imagen Top New Paid es el título de la pantalla actual y otros dos están mostrando el mosaico de pantalla anterior o siguiente. ¿Cómo puedo mostrar el título de pantalla anterior y siguiente en la esquina con algún efecto de desvanecimiento como él.

En la primera imagen Top New Paid es el título de la pantalla actual y otros dos están mostrando el mosaico de pantalla anterior o siguiente. ¿Cómo puedo mostrar el título de pantalla anterior y siguiente en la esquina con algún efecto de desvanecimiento como él.

Necesitas usar las pestañas de ActionBar, un TabsAdapter y un ViewPager (scrolly bit). Aquí está un tutorial completo que hice: http://davidjkelley.net/?p=34 (sólo utilice las importaciones de ABS, no la biblioteca de compatibilidad estándar).

He aquí algunos de los códigos relevantes:

 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) {} } 

Las pestañas que se están refiriendo son en realidad sólo un ViewPager con pestañas de título correspondientes para cada página. Esto no está incluido en el SDK de Android de forma predeterminada, pero puede utilizar ViewPagerIndicator Jake Wharton para agregar los títulos de cada ficha en su ViewPager. Creo que ActionBarSherlock (que también es creado por Jake Wharton) proporciona la misma funcionalidad exacta también.

Tuve un problema similar, pero no estaba implementando ningún ActionBar en absoluto. Me encontré con este blog que me llevó a una aplicación llamada "SwipeyTabs" que se utiliza simplemente con un ViewPager.

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

Si está utilizando ActionBarSherlock, es mejor utilizar las pestañas de la barra de acción, no TabHost . También creo que hay muestras en ABS que muestran cómo hacerlo.

Usted querrá usar ViewPager, y abandonar el TabHost.

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

  • Cómo cambiar el color de texto de autocompletar para la vista de búsqueda dentro de ActionBarSherlock con fondo oscuro?
  • Android personalizado IcsSpinner (de ActionBarSherlock)
  • ¿Cómo mostrar la barra de progreso Indeterminada cuando se pulsa el botón Actualizar en ActionBarSherlock?
  • PreferenciaActividad getSupportLoaderManager ()
  • Imagen personalizada en lugar de logotipo en ActionBar / ActionBarSherlock
  • ActionBar se oculta cuando aparece el teclado
  • ActionBarSherlock + Maps + Loaders = java.lang.NoClassDefFoundError
  • Transparente Barra de Acción: tabcolor personalizado
  • Cómo cambiar el color del texto de la barra de acción sherlock
  • EditText perder el foco con el teclado duro cuando TabHost está presente en la actividad
  • Biblioteca resolver a una ruta sin archivo project.properties
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.