He visto publicaciones en Stack Overflow y en tutoriales en otros sitios web, y no puedo entender cómo usar TabHost
. ¿Alguien puede por favor explicarme y tal vez enviarme un enlace a un tutorial?¿Cómo uso tabHost para Android
Respuesta
En ManiActivity extiende TabActivity
public class MainActivity extends TabActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); TabHost mTabHost = getTabHost(); mTabHost.addTab(mTabHost.newTabSpec("first").setIndicator("First").setContent(new Intent(this ,FirstActivity.class))); mTabHost.addTab(mTabHost.newTabSpec("second").setIndicator("Second").setContent(new Intent(this , SecondActivity.class))); mTabHost.setCurrentTab(0); } }
En este ac tivity no use el diseño "activity_main.xml".
Tabhost mTabHost = getTabHost(); es crear pestaña principal.
mTabHost.newTabSpec ("first") es create tabspec id "first".
setIndicator ("Primero") es crear el texto "Primero" en la pestaña de título.
setContent (nueva Intención (esto, FirstActivity.class)) es utilizar el contenido de FirstActivity.class (FirstActivity.java)
mTabHost.addTab (....) es añadir spectab a la pestaña principal
mTabHost.setCurrentTab (0) es la pestaña de defup cuando la página de inicio.
FirstActivity.java
public class FirstActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);
}
}
SecondActivity.java
public class SecondActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_layout);
}
}
"R.layout.first_layout" es el contenido de first_layout.xml
"R.layout.second_layout" es el contenido de second_layout.xml
En AndroidManifest.xml añadir nombre de la actividad ".FirstActivity" y ".SecondActivity" en el ejemplo xml.
Finalizar !!!!!
Las pestañas no aparecen ... ¿por qué? – guiomie
getTabHost() no funciona para mí. No se importa como un recurso. – Eenvincible
@Evenvincible debe tener su actividad Extender TabActivity – Jimmar
En primer lugar, mientras que TabHost
no está en desuso, TabActivity
en otra parte es obsoleto debido a Fragment
API.
Hay dos formas de usar TabHost; usando Fragment a través de FragmentTabHost
y usando TabHost.TabContentFactory
.
1. Utilizando Fragmento través FragmentTabHost
Este código espectáculo muestra cómo utilizar TabHost en la actividad.
FragmentTabHostActivity.java
public class FragmentTabHostActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_tab_host_activity);
FragmentTabHost fragmentTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
fragmentTabHost.setup(this, getSupportFragmentManager(), android.R.id.tabcontent);
fragmentTabHost.addTab(getTabSpec1(fragmentTabHost), Tab1Fragment.class, null);
fragmentTabHost.addTab(getTabSpec2(fragmentTabHost), Tab2Fragment.class, null);
}
private TabHost.TabSpec getTabSpec1(FragmentTabHost tabHost) {
return tabHost.newTabSpec("First Tab")
.setIndicator("Tab1");
}
private TabHost.TabSpec getTabSpec2(FragmentTabHost tabHost) {
return tabHost.newTabSpec("Second Tab")
.setIndicator("Tab 2");
}
}
fragment_tab_host_activity.xml
<android.support.v4.app.FragmentTabHost
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</android.support.v4.app.FragmentTabHost>
realidad mediante el uso del fragmento, se puede utilizar la lengüeta dentro de un fragmento (Android docs).
2. Usando TabHost.ContentFactory
TabHostActivity.java
public class TabHostActivity extends AppCompatActivity implements TabHost.TabContentFactory {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TabHost tabHost = (TabHost) findViewById(android.R.id.tabhost);
tabHost.setup();
tabHost.addTab(getTabSpec1(tabHost));
tabHost.addTab(getTabSpec2(tabHost));
}
private TabHost.TabSpec getTabSpec1(TabHost tabHost) {
return tabHost.newTabSpec("First Tab")
.setIndicator("Tab1")
.setContent(this);
}
private TabHost.TabSpec getTabSpec2(TabHost tabHost) {
return tabHost.newTabSpec("Second Tab")
.setIndicator("Tab 2")
.setContent(this);
}
@Override
public View createTabContent(String tag) {
return LayoutInflater.from(this).inflate(R.layout.activity_tab_1, null);
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<TabHost
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</TabHost>
Sin embargo, yo personalmente recomiendo el uso más reciente Material Design style TabLayout
class.
- 1. insignia en Android TabHost
- 2. Android: TabHost sin TabActivity
- 3. Android - estilo de iPhone tabhost
- 4. Android TabHost dentro del fragmento
- 5. Problemas con Android TabHost Ejemplo
- 6. Android ¿cómo puedo reemplazar el tabhost en desuso?
- 7. Android tabHost y tabWidget icon issue
- 8. Android TabHost - Actividades dentro de cada pestaña
- 9. Agregar desplazamiento en tabhost en android
- 10. Cómo cambiar el tamaño de fuente de tabhost en android
- 11. ¿Cómo centrar el texto en tabhost?
- 12. cómo agregar tabhost en fragmentos
- 13. Acción de fuego en otra actividad dentro de TabHost? (Android)
- 14. ¿Por qué Android TabHost roba el foco de un TextView?
- 15. Android - Tabhost trabajando en la clase de actividad
- 16. Cómo eliminar la pestaña de TabHost
- 17. EditText y TabHost no se gustan
- 18. ¿Cómo uso Android SyncAdapter?
- 19. ¿Alguien puede dar un código de muestra para TabHost en Android?
- 20. TabHost/TabWidget - Imagen de fondo de escala?
- 21. ¿Cómo uso el acelerómetro Android?
- 22. ¿Cómo uso ffmpeg en Android?
- 23. Android: Cómo llamar a la función de actividad dentro de la pestaña desde el tabhost
- 24. Uso de OpenGL para reemplazar Canvas - Android
- 25. Cómo cambiar las pestañas Imágenes en el TabHost
- 26. android: orientation = "vertical" no funciona para TabWidget
- 27. Uso de Android NDK
- 28. Buscando un estilo TabHost universal que funcione en las máscaras de Android, HTC Sense, Samsung, etc.
- 29. La mejor manera de lograr la comunicación entre actividades en una aplicación Android TabHost
- 30. ¿Cómo uso el método showAlert en Android?
TabHost está en desuso y se recomienda utilizar Fragmentos en su lugar. Aquí hay un tutorial sobre Fragments: http://www.vogella.com/articles/Android/article.html#fragments_tutorial. Si realmente quieres usar TabHost, tal vez alguien más pueda ayudar. No tengo mucha experiencia con eso. ¡Buena suerte! –
¿Existe realmente una relación entre tabHosts y fragmentos? –
@AndyHarris TabHost NO está en desuso. TabActivity es. Por favor, dejen de difundir rumores falsos. – aldok