Problema con el diseño de interfaz de usuario TabHost

Lo que estoy tratando de hacer es crear un diseño como este:

+--------+ Search |EditText| [Button] +--------+ +---------+ |Tab 1 |---------+ | |Tab 2 | |---------+---------+-----------------+ | ListView Item 1 | | ListView Item 2 | | ListView Item 3 | | ListView Item 4 | | ListView Item 5 | | ListView Item 6 | | ListView Item 7 | | ListView Item 8 | | ListView Item 9 | | ListView Item 10 | +-------------------------------------+ 

Así que es un TextView diciendo 'Search', un EditText y un botón.

A continuación, debajo de las pestañas – Tab 1 tiene un ListView, Tab 2 algunas otras cosas. Puedo conseguir una configuración simple de TabHost con dos lengüetas que trabajan muy bien pero no puede conseguir el antedicho para disponer correctamente.

El problema es que se instala y funciona bien – sólo el diseño es incorrecto. He intentado opiniones ponderadas y así sucesivamente pero no puedo conseguir cosas a la posición según el diagrama ASCII arriba.

Me gustaría crear la interfaz de usuario en el diseñador de Eclipse y comprobar el XML de que, excepto el diseñador no funciona con TabHost. Y DroidDraw no parece saber sobre TabHost.

Aquí está el XML:

 <?xml version="1.0" encoding="utf-8"?> <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/TabHost" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:id="@+id/LinearLayout01" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:padding="5dp"> <TextView android:id="@+id/SearchTextView" android:text="Search" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="10"> </TextView> <EditText android:text="@+id/SearchEditText" android:id="@+id/SearchEditText" android:layout_width="fill_parent" android:layout_height="fill_parent" android:singleLine="true" android:layout_weight="10"> </EditText> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="10"/> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="70"> <LinearLayout android:id="@+id/Tab1ListLayout" android:layout_width="fill_parent" android:layout_height="fill_parent"> </LinearLayout> <Button android:id="@+id/tab2" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="Tab 2 button"/> </FrameLayout> </LinearLayout> </TabHost> 

… y aquí está la Actividad:

  public class tabtest extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TabHost tabs = (TabHost)findViewById(R.id.TabHost); tabs.setup(); TabHost.TabSpec spec = tabs.newTabSpec("tag1"); spec.setContent(R.id.Tab1ListLayout); spec.setIndicator("Tab 1"); tabs.addTab(spec); spec=tabs.newTabSpec("tag2"); spec.setContent(R.id.tab2); spec.setIndicator("Tab 2"); tabs.addTab(spec); EditText et = (EditText)findViewById(R.id.SearchEditText); et.setText("Some text."); } 

Parece que necesita revisar conceptos básicos tales como "recursos de diseño" y "declarar diseño" .

Vea los trucos de diseño para el truco de disposición lineal de "peso". Solución posible:

 <?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"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/SearchTextView" android:text="Search" android:layout_width="wrap_content" android:layout_height="wrap_content"> </TextView> <EditText android:text="@+id/SearchEditText" android:id="@+id/SearchEditText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true"> </EditText> </LinearLayout> <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="0dip" android:layout_weight="1"/> <LinearLayout android:id="@+id/Tab1ListLayout" android:layout_width="fill_parent" android:layout_height="wrap_content"> </LinearLayout> <Button android:id="@+id/tab2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Tab 2 button"/> </LinearLayout> </TabHost> 
  • Android: TabActivity obsoleto, el uso de fragmentos?
  • Definir Tabhost / TabWidget + contenido dentro del archivo xml sin ningún código - es posible?
  • Mostrar una barra de progreso en una ficha secundaria hasta que el WebView se cargue
  • FragmentTabHost no crea vista dentro de Fragmento en android
  • Android: Cómo llamar a la función de la actividad dentro de la pestaña desde el tabhost
  • Barra de pestañas ocultar problema android
  • Android Fragment, No se encontró ninguna vista para id dentro de TabHost
  • Cambio de vista dentro de TabHost (una actividad, varias vistas)
  • ¿Cómo centrar el texto en tabhost?
  • OnClickListener en pestañas no funciona
  • ¿Las pestañas anidadas con el visor de desplazamiento en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.