Cambiar el texto en una pestaña de Android
Tengo una aplicación de Android con 3 pestañas en un TabHost (etiquetas de texto, sin imágenes). Configuré las pestañas de la siguiente manera:
intent = new Intent().setClass(this, AnnouncementsActivity.class); spec = tabHost.newTabSpec("news").setIndicator("News").setContent(intent); tabHost.addTab(spec);
Comienzo un hilo de fondo para buscar avisos de mi servidor y quiero actualizar la etiqueta de texto en la pestaña para decirle al usuario cuántos anuncios nuevos hay. Por ejemplo, quiero cambiar el texto de la pestaña a "Noticias (3)". ¿Cómo puedo acceder y cambiar la etiqueta del texto en la pestaña?
- Tabhost nullpointerexception cuando tabhost no es la única cosa en el diseño
- FindFragmentByTag - buscando fragmento en FragmentTabHost - always null
- Cambiando dinámicamente los fragmentos dentro de un host de fichas de fragmentos?
- TabHost con Fragmentos y FragmentActivity
- Texto en la parte superior del diseño de host de la pestaña Android
¡Cualquier sugerencia es bienvenida!
- Cómo inicializar el contenido de la pestaña cuando se inicializa la aplicación
- Android OnResume no se llama cuando se usa TabHost y LocalActivityManager
- Android: tabhost en un fragmento, w / fragmentos como fichas
- Android Tabhost Problema - .setIndicator
- Cualquier método alternativo para Casting de clase
- Cómo cambiar las pestañas programatically en android de fragmento?
- Android ¿cómo puedo reemplazar el tabhost obsoleto?
- InputMethodManager contiene referencia al tabhost - Memory Leak - OOM Error
Mire en el código demostrado aquí , vea al final del código hay manera hacky para obtener el textView.
Puedes hacerlo así
TabHost tabHost = getTabHost(); TextView tv = (TextView) tabHost.getTabWidget().getChildAt(0).findViewById(android.R.id.title); tv.setText("New Tab Text");
Donde android.R.id.title
es generado por el sistema, solo cambia ChildIndex y Text de acuerdo a tu necesidad
Para una versión posterior de android (5.1), esto funcionó para mí:
Tenga en cuenta que este ejemplo sólo cambia el texto de la primera pestaña. No sería demasiado difícil ajustar una pestaña arbitraria.
FragmentTabHost tabHost = (FragmentTabHost)view.findViewById(android.R.id.tabhost); AppCompatTextView tv = null; RelativeLayout parentLayout = (RelativeLayout)tabHost.getTabWidget().getChildAt(0); for (int i = 0; i < parentLayout.getChildCount(); i++) { View tempView = parentLayout.getChildAt(i); if (tempView instanceof AppCompatTextView) { tv = (AppCompatTextView)tempView; } } if (tv != null) { tv.setText("Your updated text goes here"); }
Todo lo que hice fue ejecutarlo a través del depurador y averiguar la jerarquía. No pude obtener el android.R.id.title para trabajar como la vista de texto ahora se hace referencia por un id diferente. De todos modos, también es ahora un AppCompatTextView en lugar de un TextView simple y antiguo.
Una vez más, esto no es óptimo, pero obtiene el resultado deseado para versiones más recientes de android.
¡Espero que esto ayude!
Recientemente necesito cambiar el texto de TabHost y resolví el problema usando el código siguiente.
Disculpe por favor mi inglés, soy brasileño y todavía estoy aprendiendo. Espero ayudar a alguien que tiene el mismo problema.
TabHost host = (TabHost)findViewById(R.id.tabDetail); host.setup(); //Tab 1 TabHost.TabSpec spec = host.newTabSpec("tab1"); spec.setContent(R.id.tab1); spec.setIndicator("Details"); host.addTab(spec); //Tab 2 spec = host.newTabSpec("tab2"); spec.setContent(R.id.tab2); spec.setIndicator("Comments"); host.addTab(spec);
- Android: ¿Cómo comparar el recurso de una imagen con R.drawable.imagename?
- ¿Cómo puedo implementar la máscara de entrada de agrupación de dígitos usando InputFilter?