Cambiar el contenido de framelayout en el botón de clic

Derecho tengo un diseño principal definido, que tiene un marco, una tabla en ese marco y luego en la parte inferior una vista de desplazamiento horizontal con una carga de botones. Cuando se hace clic en el botón, el contenido del marco debe cambiarse a una nueva tabla, al igual que cuando se elige una pestaña diferente en el tutorial de diseño de tabulación (no se utiliza un diseño de pestaña porque tengo muchos botones que no caben en la pantalla a menos que Desplazado

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="5dp"> <FrameLayout android:id="@+id/tabcontent" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1.2" android:padding="5dp" android:background="@color/white"> <TableLayout android:id="@+id/Jobs" android:layout_width="fill_parent" android:layout_height="wrap_content" android:stretchColumns="*"> <TableRow android:id="@+id/JobRow" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/JobID" android:layout_column="1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@color/black"></TextView> <TextView android:id="@+id/JobStatus" android:layout_column="2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@color/black"></TextView> <TextView android:id="@+id/Customer" android:layout_column="3" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@color/black"></TextView> <TextView android:id="@+id/Department" android:layout_column="4" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@color/black"></TextView> <TextView android:id="@+id/DocType" android:layout_column="5" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@color/black"></TextView> </TableRow> </TableLayout> </FrameLayout> <HorizontalScrollView android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_gravity="bottom" android:scrollbars="none"> <LinearLayout android:orientation="horizontal" android:layout_height="wrap_content" android:layout_width="fill_parent"> <ImageButton android:id="@+id/batching" android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/batching"></ImageButton> <ImageButton android:id="@+id/merging" android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/merging"></ImageButton> <ImageButton android:id="@+id/processing" android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/processing"></ImageButton> <ImageButton android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/processing"></ImageButton> <ImageButton android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/processing"></ImageButton> <ImageButton android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/processing"></ImageButton> <ImageButton android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/processing"></ImageButton> <ImageButton android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/processing"></ImageButton> <ImageButton android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/processing"></ImageButton> <ImageButton android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/processing"></ImageButton> <ImageButton android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/processing"></ImageButton> <ImageButton android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/processing"></ImageButton> <ImageButton android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/processing"></ImageButton> <ImageButton android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/processing"></ImageButton> </LinearLayout> </HorizontalScrollView> </LinearLayout> 

Ahora para las pestañas cambiar el contenido de la pestaña parecía bastante fácil como tal:

 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); } 

¿Cómo puedo hacer algo similar con el contenido del marco y los botones? Yo estaba pensando en algo en la línea de

 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Resources res = getResources(); // Resource object to get Drawables final Intent batchingIntent, mergingIntent, processingIntent; // Create an Intent to launch an Activity for the tab (to be reused) final Button batchButton = (Button) findViewById(R.id.batching); batchingIntent = new Intent().setClass(this, BatchingActivity.class); batchButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { // Perform action on clicks FrameLayout frame = (FrameLayout) findViewById(R.id.tabcontent); frame.setContent(batchingIntent) // doesn't exist obviously } }); 

No puede anidar una actividad dentro de FrameLayout. Lo que puede hacer es cambiar sus puntos de vista por otros nuevos:

 FrameLayout frame = (FrameLayout) findViewById(R.id.tabcontent); frame.removeAllViews(); frame.addView(aNewViewOne); frame.addView(aNewViewTwo); ... 

En lugar de agregar vistas, también podría inflar un diseño en FrameLayout:

LayoutInflater.from(context).inflate(R.other_tab, frame, true);

  • GetHeight devuelve 0 para todos los objetos de IU de Android
  • Cómo establecer el atributo de primer plano en otra vista no FrameLayout
  • Android: Borde personalizado para FrameLayout
  • FrameLayout a RelativeLayout ClassCastException incluso si no hay FrameLayout usado
  • ¿Por qué se utiliza FrameLayout para fragmentos?
  • Dos diseños de marco en el ejemplo de FragmentTabs de Android Support4Demos
  • ¿Qué es MergeRootFrame en FrameLayout?
  • Cómo programar mediante programación el orden z de vistas
  • La altura de la vista de niño de Android no coincide con el padre en el elemento de ListView
  • ImageView en cambio de orientación - Drawable ignora setBounds y vuelve al estado original
  • Agregar y eliminar un TextView dinámicamente en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.