2011-02-24 12 views
9

Derecha 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 cambiar a una nueva tabla, al igual que cuando elige una pestaña diferente en el tutorial de diseño de pestañas (no usando un diseño de pestañas ya que tengo muchos botones que no caben en la pantalla a menos volutas)Cambiando el contenido de framelayout en el botón clic

<?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> 

ya por pestañas cambiando el contenido de la ficha parecía bastante fácil de esta manera:

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 de la trama y los botones? Estaba pensando en algo parecido a

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

Respuesta

24

No se puede anidar una Actividad dentro de FrameLayout. Lo que puede hacer es cambiar sus puntos de vista con otros nuevos:


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

En lugar de añadir puntos de vista también se puede inflar un diseño en el FrameLayout:

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

Cuestiones relacionadas