Tabwidget se superpone con el contenido de mi actividad
Después de pasar 2 días sólidos buscando una respuesta, me gustaría pedir ayuda sobre el siguiente comportamiento.
Estoy tratando de codificar una aplicación tabhost simple en Android, con un diseño por actividad. He diseñado mi diseño para que el tabwidget aparezca en la parte inferior de la pantalla.
- TabWidget - ¿Cómo establecer la posición del texto del indicador?
- Cómo hacer oval shape tabhost en android
- Lengüetas de diferentes tamaños en Android
- Primera pestaña de atributos de android siempre se llama sin importar que establecemos tab2 como pestaña predeterminada
- ¿Por qué obtengo una excepción de puntero nulo de TabWidget?
En la primera pestaña, estoy intentando insertar un simple ListView de 2 líneas. Mi problema es que el ListView está bien en el fondo, pero la mitad de él está oculto detrás del tabwidget. Me gustaría saber cómo hacer que mi ListView se muestre justo encima del tabwidget.
Aquí está mi 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="fill_parent" android:layout_height="fill_parent"> <RelativeLayout android:layout_height="fill_parent" android:layout_width="fill_parent"> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="5dp" /> <TabWidget android:id="@android:id/tabs" android:layout_alignParentBottom="true" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </RelativeLayout> </TabHost>
Aquí está mi clase de aplicación principal:
public class TestTabWidget extends TabActivity { 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 intent = new Intent().setClass(this, AActivity.class); spec = tabHost.newTabSpec("artists").setIndicator("Tab A", res.getDrawable(R.drawable.ic_tab_a)) .setContent(intent); tabHost.addTab(spec); tabHost.setCurrentTab(0); } }
Aquí está mi código de actividad:
public class AActivity extends Activity { ListView lvListe; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.a_layout); lvListe = (ListView)findViewById(R.id.lvListe); lvListe.setBackgroundResource(R.layout.tables); String[] listeStrings = {"Value 1","Value 2"}; lvListe.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,listeStrings)); } }
Aquí está mi diseño para la actividad:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ListView android:id="@+id/lvListe" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_alignParentBottom="true" /> </RelativeLayout>
Gracias a alguien dispuesto a ayudarme que estoy volviendo loco ….
Adán
- TabHost / TabWidget - Escala de la imagen de fondo?
- Android TabWidget en tema de luz
- Cómo establecer la pestaña seleccionada debe estar en el centro
- ¿Por qué aparece el teclado después de TabBar?
- Cómo cambiar el color del texto del indicador de tabs en android?
- Tabwidget divisores en Gingerbread vs ICS y superiores
- Cómo cambiar el tamaño de fuente de tabhost en android
- Android 2.1 NullPointerException con TabWidgets
Pruebe este diseño en su lugar para su sección RelativeLayout
:
<RelativeLayout android:layout_height="fill_parent" android:layout_width="fill_parent"> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_above="@android:id/tabs" android:padding="5dp" /> <TabWidget android:id="@android:id/tabs" android:layout_alignParentBottom="true" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </RelativeLayout>
En este momento, FrameLayout
está llenando todo el espacio dentro de RelativeLayout
, ya que RelativeLayout
no hace distinciones sobre la colocación de elementos al lado del otro como LinearLayout
hace, y permite la superposición. Mi ajuste le dice al diseño que rellene el espacio entre el widget y la parte superior de ese diseño.
Otra nota sobre RelativeLayout
, el orden Z de los elementos está determinado por el orden en XML, por eso el TabWidget
aparece en la parte superior de FrameLayout
. Si usted había invertido el orden, el TabWidget
ni siquiera habría sido visible!
¡Espero que ayude!
- Com.google.gson.JsonSyntaxException: java.lang.IllegalStateException en android
- ¿Es posible especificar dinámicamente el nombre del paquete durante la compilación?