7

Soy nuevo en Android y en mi proyecto tengo requisitoCómo establecer pestaña seleccionada debe estar en medio

es decir, tengo seis fichas, pero muestro sólo tres pestañas en la pantalla y para el descanso de pestañas utilizo ScrollView. Aquí el elemento de la pestaña seleccionada debe estar en el centro, primero cuando entro en la pantalla, muestro que el artículo del medio está activo (es decir, seleccionado).

Eso está bien, pero ¿cómo podría establecer este elemento medio como medio cuando me desplazo por las pestañas restantes?

alguien puede dar sugerencias para obtener una solución.

+0

has mirado en el uso de un oyente que detecta movimiento en sentido vertical y que establece manualmente la selectedTab en el método de devolución de llamada? – hovanessyan

+0

Gracias por su sugerencia, pero yo no trabajo los oyentes siguiente movimiento en sentido vertical (I declaró Horizaontalscrollview en XML) TestHorizontalScrollView sView = (TestHorizontalScrollView) findViewById (R.id.horizontalScrollView); TestHorizontalScrollView clase pública se extiende HorizontalScrollView { \t TestHorizontalScrollView pública (Contexto contexto) { \t super (contexto); \t} \t @ Override \t protected void onScrollChanged (int l, int t, int oLDL, int oldt) { \t \t \t super.onScrollChanged (l, t, oLDL, oldt); \t} \t} – Gopi

+0

http://stackoverflow.com/q/8181828/1007273 eche un vistazo aquí, creo que encontrará ideas útiles. – hovanessyan

Respuesta

0

No creo que el tabhost tenga tal comportamiento. Como sé, tabhost puede funcionar sin el controlador de pestañas. Para su caso, una galería reemplazará el control de pestañas, como usted sabe, el elemento seleccionado en la galería siempre permanece en el medio. Luego, en el detector de eventos de la galería, escriba un código para controlar qué pestaña se mostrará en tabhost.

7

Comprobar this fuera :)

public void centerTabItem(int position) { 
    tabHost.setCurrentTab(position); 
    final TabWidget tabWidget = tabHost.getTabWidget(); 
    final int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); 
    final int leftX = tabWidget.getChildAt(position).getLeft(); 
    int newX = 0; 

    newX = leftX + (tabWidget.getChildAt(position).getWidth()/2) - (screenWidth/2); 
    if (newX < 0) { 
     newX = 0; 
    } 
    horizontalScrollView.scrollTo(newX, 0); 
} 
+0

esto funciona muy bien. pero ¿cómo hago para que esto suceda por primera vez cuando el tabhost se configura e inicializa? digamos que quiero iniciar el host de pestañas con el índice actual como 5 – Sunny

+0

Después de la configuración, puede llamar a centerTabItem (5) directamente –

Cuestiones relacionadas