Pregunta

Esta es mi primera aplicación con Android. Caminé por la aplicación "HellotabWidget" en el sitio web de Androids, pero no puedo entender cómo agregar contenido a las pestañas. Framelayout se apila uno encima del otro hasta la parte superior izquierda (de lo que he leído). Agregué un par de textViews y una imagen de ImageView, pero solo muestra el último elemento agregado. ¿Hay alguna forma de usar el diseño lineal en lugar del diseño del marco? Si no, ¿cómo puede colocar múltiples vistas en la pestaña? Lo único que he hecho diferente del ejemplo es que agregué una cuarta pestaña. En una de las actividades de pestaña, inserté el siguiente código para intentar obtener varios elementos para mostrar:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);    

        TextView textview = new TextView(this);
        textview.setText("This is the About tab");
        setContentView(textview);

        TextView textview2 = new TextView(this);
        textview2.setText("About Test");
        setContentView(textview2);

        ImageView imgView = new ImageView(this);
        imgView.setImageDrawable(getResources().getDrawable(R.drawable.header));
        setContentView(imgView);
    }

Aquí está el enlace al ejemplo que seguí:http://developer.android.com/resources/tutorials/views/hello-tabwidget.html

¿Fue útil?

Solución

¿Cuál es su archivo XML de diseño? Utilizo esto y puedo apilar varios TextView en cada pestaña. Tabactividad:

<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <ScrollView android:layout_width="fill_parent" 
        android:layout_height="wrap_content" >
        <LinearLayout android:layout_width="fill_parent" 
            android:layout_height="fill_parent"
            android:orientation="vertical" >
            <TabWidget android:id="@android:id/tabs"
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content" />
            <FrameLayout android:id="@android:id/tabcontent"
                android:layout_width="fill_parent" 
                android:layout_height="fill_parent" />
        </LinearLayout>
    </ScrollView>
</TabHost>

Pestaña Inside Activity:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:orientation="vertical" >
    <TextView android:id="@+id/textOne" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <TextView android:id="@+id/textTwo" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
<LinearLayout>

Yo mismo soy un novato, por lo que puede haber una mejor manera de hacerlo. Sin embargo, esto funciona para mí.

Otros consejos

No leíste el ejemplo con cuidado. Eche un vistazo al punto número 6; Verás algo como:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Resources res = getResources(); // Resource object to get Drawables
    TabHost tabHost = getTabHost();  // The activity TabHost
    TabHost.TabSpec spec;  // Resusable TabSpec for each tab
    Intent intent;  // Reusable Intent for each tab

    // Create an Intent to launch an Activity for the tab (to be reused)
    intent = new Intent().setClass(this, ArtistsActivity.class);

    // Initialize a TabSpec for each tab and add it to the TabHost
    spec = tabHost.newTabSpec("artists").setIndicator("Artists",
                      res.getDrawable(R.drawable.ic_tab_artists))
                  .setContent(intent);
    tabHost.addTab(spec);

    // Do the same for the other tabs
    intent = new Intent().setClass(this, AlbumsActivity.class);
    spec = tabHost.newTabSpec("albums").setIndicator("Albums",
                      res.getDrawable(R.drawable.ic_tab_albums))
                  .setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, SongsActivity.class);
    spec = tabHost.newTabSpec("songs").setIndicator("Songs",
                      res.getDrawable(R.drawable.ic_tab_songs))
                  .setContent(intent);
    tabHost.addTab(spec);

    tabHost.setCurrentTab(2);
}

Eso es lo que pones en la información para el TabActivity. Como puede ver, tiene 3 actividades. Lo que está haciendo es usar una sola actividad y establecer la vista de contenido 3 veces, lo que obviamente es incorrecto.

Entonces ... ¿cómo hacer que funcione? Primero, lea nuevamente el tutorial. En segundo lugar, cree una actividad para cada pestaña que desee mostrar. Y use el modelo anterior para agregar esas actividades a su TabHost.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top