Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Es posible cambiar el indicador de pestaña de la barra de acciones programáticamente?

¿Cómo puedo cambiar programáticamente el indicador de pestaña seleccionado de mi barra de acción? He leído sobre el estilo de tabulación , y el método Tab.setCustomView (), pero ninguno de estos ayuda:

 <TextView android:id="@+id/custom_tab_text" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerInParent="true" android:layout_centerHorizontal="true" android:gravity="center|center_horizontal" android:textStyle="bold"/> <View android:id="@+id/custom_tab_view" android:layout_width="match_parent" android:layout_height="10dp" android:layout_alignParentBottom="true"/> 

¿Puede alguien decirme dónde estoy equivocado? ¿Hay otra manera de hacerlo? Gracias

  • ¿Cómo agrego un onclicklistener a un botón dentro de un adaptador listview?
  • ADB no puede encontrar Nexus 7 en Mac OS X Mavericks
  • App: showAsAction vs android: showAsAction
  • ¿Cómo comprobar un dispositivo Android es HDPI pantalla o pantalla MDPI?
  • ¿Cómo ejecutar o iniciar la aplicación dentro del fragmento de Android?
  • ¿Cuál es el uso de un ... -v21.xml?
  • 2 Solutions collect form web for “¿Es posible cambiar el indicador de pestaña de la barra de acciones programáticamente?”

    He logrado implementar lo que quería usando la respuesta de @ Padma para generar mis fondos de indicadores de fichas: necesitaba 5 selectores: verde, amarillo, azul, naranja y rojo. Así que tabs_selector_red.xml, tabs_selector_blue.xml, etc... creado 5 xml drawables tabs_selector_red.xml, tabs_selector_blue.xml, etc... ( tabs_selector_red.xml, tabs_selector_blue.xml, etc... ):

    Tabs_selector_green.xml:

      <!-- Non focused states --> <item android:drawable="@android:color/transparent" android:state_focused="false" android:state_pressed="false" android:state_selected="false"/> <item android:drawable="@drawable/layer_bg_selected_tabs_green" android:state_focused="false" android:state_pressed="false" android:state_selected="true"/> <!-- Focused states --> <item android:drawable="@android:color/transparent" android:state_focused="true" android:state_pressed="false" android:state_selected="false"/> <item android:drawable="@drawable/layer_bg_selected_tabs_green" android:state_focused="true" android:state_pressed="false" android:state_selected="true"/> <!-- Pressed --> <!-- Non focused states --> <item android:drawable="@android:color/transparent" android:state_focused="false" android:state_pressed="true" android:state_selected="false"/> <item android:drawable="@drawable/layer_bg_selected_tabs_green" android:state_focused="false" android:state_pressed="true" android:state_selected="true"/> <!-- Focused states --> <item android:drawable="@android:color/transparent" android:state_focused="true" android:state_pressed="true" android:state_selected="false"/> <item android:drawable="@drawable/layer_bg_selected_tabs_green" android:state_focused="true" android:state_pressed="true" android:state_selected="true"/> 

    También he creado una layer-list de layer-list para cada fondo xml: layer_bg_selected_tabs_green.xml

     <item> <shape android:shape="rectangle" > <solid android:color="@color/tab_green" /> <padding android:bottom="5dp" /> </shape> </item> <item> <shape android:shape="rectangle" > <solid android:color="#FFFFFF" /> </shape> </item> 

    Y finalmente, en el Java , cambio el fondo dinámicamente compran usando la custom view e index custom view la pestaña seleccionada:

     private static final int[] TABS_BACKGROUND = { R.drawable.tabs_selector_orange, R.drawable.tabs_selector_green, R.drawable.tabs_selector_red, R.drawable.tabs_selector_blue, R.drawable.tabs_selector_yellow }; /* BLA BLA BLA */ @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { // TODO Auto-generated method stub RelativeLayout tabLayout = (RelativeLayout) tab.getCustomView(); tabLayout.setBackgroundResource(TABS_BACKGROUND[tab.getPosition()]); tab.setCustomView(tabLayout); /* ... */ } 

    Ahora vamos a añadir algunas capturas de pantalla:

    verdeazulrojo

    // la barra de pestañas debe ser

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/Wrap" android:background="@drawable/tabs_selector" android:gravity="center_horizontal|bottom" android:minHeight="@dimen/size_fourty" > <TextView android:id="@+id/custom_tab_text" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerInParent="true" android:layout_centerHorizontal="true" android:gravity="center|center_horizontal" android:textStyle="bold"/> </RelativeLayout> 

    // tu tabs_selector.xml debería gustarle

     <!-- Non focused states --> <item android:drawable="@drawable/layer_bg_unselected_tabs" android:state_focused="false" android:state_pressed="false" android:state_selected="false"/> <item android:drawable="@drawable/layer_bg_selected_tabs" android:state_focused="false" android:state_pressed="false" android:state_selected="true"/> <!-- Focused states --> <item android:drawable="@drawable/layer_bg_unselected_tabs" android:state_focused="true" android:state_pressed="false" android:state_selected="false"/> <item android:drawable="@drawable/layer_bg_selected_tabs" android:state_focused="true" android:state_pressed="false" android:state_selected="true"/> <!-- Pressed --> <!-- Non focused states --> <item android:drawable="@drawable/layer_bg_unselected_tabs" android:state_focused="false" android:state_pressed="true" android:state_selected="false"/> <item android:drawable="@drawable/layer_bg_selected_tabs" android:state_focused="false" android:state_pressed="true" android:state_selected="true"/> <!-- Focused states --> <item android:drawable="@drawable/layer_bg_unselected_tabs" android:state_focused="true" android:state_pressed="true" android:state_selected="false"/> <item android:drawable="@drawable/layer_bg_selected_tabs" android:state_focused="true" android:state_pressed="true" android:state_selected="true"/> 

    // tu layer_bg_unselected_tabs debería ser así

     <item> <shape android:shape="rectangle" > <solid android:color="@color/red" /> <padding android:bottom="2dp" /> </shape> </item> <item> <shape android:shape="rectangle" > <solid android:color="@color/gray" /> </shape> </item> 

    // tu layer_bg_selected_tabs debería ser así

     <item> <shape android:shape="rectangle" > <solid android:color="@color/red" /> <padding android:bottom="8dp" /> </shape> </item> <item> <shape android:shape="rectangle" > <solid android:color="@color/gray" /> </shape> </item> 

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.