¿Es posible usar las pestañas AND de desplegable como navegación en la barra de acción?

¿Es posible tener ambos, un hilandero / desplegable en la parte superior y las pestañas justo debajo en la barra de acción? Quiero utilizar la ruleta en la parte superior de la barra de acción como controlador de control de vista (es decir, vista de tabla o vista de gráfico) mientras que las fichas siguientes van a mostrar diferentes listas de datos.

La siguiente captura de pantalla ilustra exactamente lo que quiero lograr:

Introduzca aquí la descripción de la imagen

Si no es posible tener ambos modos en la barra de acción, podría poner un TabWidget en la parte superior de mi vista de contenido. Sin embargo, estoy un poco inseguro si debo tener un fragmento o una actividad por ficha.

EDITAR:

¿Es posible usar las pestañas AND de desplegable como navegación en la barra de acción?

No. El código en ActionBarView (donde termina la llamada setNavigationMode (int)) utiliza una instrucción switch, por lo que los modos no se pueden combinar.

Sin embargo, una combinación de los modos de navegación de la barra de acción y la respuesta anterior sigue siendo válida: puede utilizar una vista personalizada en la barra de acciones y utilizar un ViewPager para el contenido. Cada pestaña en el ViewPager sería un fragmento que se puede actualizar manualmente (cambiar el tipo de vista) de la actividad principal cuando se cambia la ruleta.

Nota lateral, hay bibliotecas de terceros como ViewPagerExtensions que dan la apariencia de las pestañas fijas sin tener que usar las pestañas de ActionBar.

Es posible. Yo estaba tratando de lograr una interfaz de usuario idéntica a lo que han mostrado, y se quedó atascado hasta que he intentado algo bastante simple, pero un poco confuso también.

Lo que he hecho es establecer un Spinner como mi vista personalizada para la ActionBar, y luego:

ActionBar actionBar = getActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

Aquí hay un ejemplo de lo que quiero decir.

Tabs Código:

 ActionBar actionBar = getActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); actionBar.addTab(actionBar.newTab().setText("Today").setTabListener(this)); actionBar.addTab(actionBar.newTab().setText("List").setTabListener(this)); actionBar.addTab(actionBar.newTab().setText("Month").setTabListener(this)); 

En la actividad principal para esta actividad, he hecho esto:

 Context contextTheme = new ContextThemeWrapper(this, R.style.ActionBarSpinner); Spinner actionBarSpinner = new Spinner(contextTheme); // Specify a SpinnerAdapter to populate the dropdown list. actionBarSpinnerAdapter = new ActionBarSpinnerAdapter(actionBar.getThemedContext(), dropdownValues); actionBarSpinner.setAdapter(actionBarSpinnerAdapter); // Set up the dropdown list navigation in the action bar. actionBarSpinner.setOnItemSelectedListener(this); actionBar.setCustomView(actionBarSpinner); 

Esto efectivamente hace me da una vista personalizada para la ActionBar, pero luego puedo configurar el navigationMode a las pestañas para permitirme tener las pestañas que quiero. Establezca los oyentes de eventos apropiados en cada elemento, y voila!

 Is it possible to use dropdown AND tabs as navigation in the action bar? 

No es posible en la lib predefinida con bat, puedes crear una barra de acción personalizada y establecer una posible

Prueba este código

 action_bar.xml 

 <LinearLayout android:id="@+id/actionbar_linearLayout_menu" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginTop="2dip" android:gravity="right" > <ImageView android:id="@+id/actionbar_imageView_menu_search" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="5dip" android:padding="8dp" android:src="@drawable/button_search_selector" /> <ImageView android:id="@+id/actionbar_imageView_menu_myaccount" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="5dip" android:padding="8dp" android:src="@drawable/button_myaccount_selector" /> <ImageView android:id="@+id/actionbar_imageView_menu_settings" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="5dip" android:padding="8dp" android:src="@drawable/button_settings_selector" /> </LinearLayout> <LinearLayout android:id="@+id/actionbar_linearLayout_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_toLeftOf="@+id/actionbar_linearLayout_menu" > <Spinner android:id="@+id/actionbar_spi_menu" style="@style/MenuSpinnerTextViewItem" android:layout_width="80dip" android:layout_height="34dip" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginTop="6dip" android:background="@drawable/spinner_bg" android:paddingLeft="3dip" android:spinnerMode="dropdown" android:visibility="gone" /> <com.smartdeal.util.SmartDealTextView android:id="@+id/actionbar_txt_title" style="@style/Style_Text_Bold" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginTop="4dip" android:gravity="left" android:padding="5dip" android:text="Smart Deal" android:textColor="@android:color/white" android:textSize="18dip" /> </LinearLayout> <LinearLayout android:id="@+id/actionbar_linearLayout_search" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:background="@drawable/serch_bg" android:visibility="gone" > <ImageView android:id="@+id/actionbar_imageView_searchMenu_search" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/search_icon_selected" /> <EditText android:id="@+id/actionbar_edt_searchMenu" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dip" android:layout_weight="1" android:background="@null" android:singleLine="true" android:textColor="@android:color/white" android:textSize="18dip" > </EditText> <ImageView android:id="@+id/actionbar_imageView_searchMenu_cancel" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="center_horizontal" android:layout_marginLeft="5dip" android:src="@drawable/search_cancel" /> </LinearLayout> 

BaseActivity.java

 { final ActionBar ab = getSupportActionBar(); ab.setDisplayHomeAsUpEnabled(true); final LayoutInflater inflater = (LayoutInflater) getSystemService("layout_inflater"); ab.setDisplayShowTitleEnabled(false); // ab.setTitle("Settings"); View view = inflater.inflate(R.layout.actionbar_view, null); linLayoutMenu = (LinearLayout) view .findViewById(R.id.actionbar_linearLayout_menu); linLayoutSearch = (LinearLayout) view .findViewById(R.id.actionbar_linearLayout_search); linLayoutTitle = (LinearLayout) view .findViewById(R.id.actionbar_linearLayout_title); txtTitle = (TextView) view.findViewById(R.id.actionbar_txt_title); spiMenu = (Spinner) view.findViewById(R.id.actionbar_spi_menu); menuSearch = (ImageView) view .findViewById(R.id.actionbar_imageView_menu_search); menuMyaccount = (ImageView) view .findViewById(R.id.actionbar_imageView_menu_myaccount); menuSettings = (ImageView) view .findViewById(R.id.actionbar_imageView_menu_settings); menuSearchCancel = (ImageView) view .findViewById(R.id.actionbar_imageView_searchMenu_cancel); menuSearch.setOnClickListener(this); menuMyaccount.setOnClickListener(this); menuSettings.setOnClickListener(this); menuSearchCancel.setOnClickListener(this); if (this instanceof HistoryActivity) { txtTitle.setVisibility(View.GONE); spiMenu.setVisibility(View.VISIBLE); List<String> list = new ArrayList<String>(); list.add("History"); list.add("Activity"); MenuListAdapter menuList = new MenuListAdapter(this, list); spiMenu.setAdapter(menuList); } else { txtTitle.setVisibility(View.VISIBLE); spiMenu.setVisibility(View.GONE); } ab.setCustomView(view); ab.setDisplayShowCustomEnabled(true); } 

ViewActivity.java

TabListener {

 private ListView historyList; private ArrayList<String> list; LinearLayout linLayoutHistory, linLayoutActivity; private ActionBar actionBar; @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.....); initComponent(); } private void initComponent() { // setActionBarHomeUpAsEnable(true); linLayoutActivity = (LinearLayout) findViewById(R.id.history_activity_linLayout_activity); linLayoutHistory = (LinearLayout) findViewById(R.id.history_activity_linLayout_history); historyList = (ListView) findViewById(R.id.history_activity_listView); list = new ArrayList<String>(); spiMenu.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub } @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // TODO Auto-generated method stub actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); ActionBar.Tab month_tab = actionBar.newTab() .setText(getResources().getString(R.string.tab_month)) .setTabListener(this); ActionBar.Tab year_tab = actionBar.newTab() .setText(getResources().getString(R.string.tab_year)) .setTabListener(this); ActionBar.Tab all_tab = actionBar.newTab() .setText(getResources().getString(R.string.tab_all)) .setTabListener(this); actionBar.addTab(month_tab); actionBar.addTab(year_tab); actionBar.addTab(all_tab); return super.onCreateOptionsMenu(menu); } @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { // TODO Auto-generated method stub } @Override public void onTabUnselected(Tab tab, FragmentTransaction ft) { // TODO Auto-generated method stub } @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { // TODO Auto-generated method stub } 

También puede crear un proveedor de acciones personalizadas para obtener un hilador en la barra de acción. Por lo tanto, no es necesario crear una barra de acción completa. Al hacer esto y utilizar las pestañas como modo de navegación de su objetivo se cumple.

  • ¿Cómo se utiliza TabItem cuando se coloca en el XML de la disposición?
  • ¿Cómo mostrar el contador de notificaciones no leído en Tabs dentro de TabLayout?
  • Android Tab Layout inside Fragmento no carga el contenido de la pestaña
  • Android: ¿Cómo agregar iconos / drawables a la PagerTabStrip de la versión 4 de Android Support Lib?
  • HorizontalScrollView en TabHost añadiendo espacio adicional al final
  • Barra de acción Sherlock: las pestañas no cambiarán en el paisaje al pasar
  • Cuadro de diálogo de actividad con ficha
  • Añadir iconos a SlidingTabLayout en lugar de texto
  • Fragmento dentro de la pestaña en Android
  • Las pestañas de la barra de acciones que aparecen como lista desplegable
  • Tabs no toma el ancho completo de la pantalla
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.