2010-09-20 22 views

Respuesta

0

Es posible que necesite un GridView. Un GridView es un ViewGroup que muestra elementos en una grilla desplazable bidimensional. Los elementos de la cuadrícula se insertan automáticamente en el diseño utilizando un ListAdapter.

+2

he intentado pero parece GridView no admite desplazamiento horizontal: http: //stackoverflow.com/questions/ 2997818/gridview-with-horizontal-scroll –

7

Coloque una galería en un GridView con una columna y un tamaño de columna establecidos para llenar la vista primaria (o algo por el estilo). Coloque una galería en GridView y establezca su altura en LayoutParams a la altura de los drawables/views que desee ocupar. Todo lo que necesita hacer entonces es cuando una galería se mueve para mover todas las demás en la vista de cuadrícula. Publicaré el código a continuación. Nota: el código que hice es una prueba de concepto que funciona, solo lo probé en mi teléfono. Como tal, sin embargo, no es llamativo. Mientras continúo trabajando en ello, puedo actualizar el código para que se vea mejor.

~ Aedón :)

public class Test extends Activity { 
    /** Called when the activity is first created. */ 
    GridView gv; 
    Gallery g[] = new Gallery[3]; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     gv = (GridView) findViewById(R.id.gridview); 
     gv.setAdapter(new GAdapter()); 
     for (int i = 0; i < g.length; i++) { 
      g[i] = new Gallery(this); 
      g[i].setAdapter(new GGAdapter()); 
      g[i].setOnTouchListener(new OnTouchListener() { 
       @Override 
       public boolean onTouch(View arg0, MotionEvent ev) { 
        if (ev.getAction() == MotionEvent.ACTION_UP) { 
         for (int j = 0; j < g.length; j++) { 
          g[j].setSelection(((AdapterView) arg0) 
            .getSelectedItemPosition()); 
         } 
        } 
        return false; 
       } 
      }); 
     } 
    } 

    private class GAdapter extends BaseAdapter { 
     public GAdapter() { 
     } 

     @Override 
     public int getCount() { 
      return g.length; 
     } 

     @Override 
     public Object getItem(int pos) { 
      return pos; 
     } 

     @Override 
     public long getItemId(int pos) { 
      return pos; 
     } 

     @Override 
     public View getView(final int pos, View convertView, ViewGroup parent) { 

      g[pos].setLayoutParams(new GridView.LayoutParams(gv.getWidth(), gv 
        .getHeight())); 
      return g[pos]; 
     } 
    } 

    private class GGAdapter extends BaseAdapter { 
     int[] images = new int[] { R.drawable.icon, R.drawable.icon, 
       R.drawable.icon }; 

     public GGAdapter() { 
     } 

     @Override 
     public int getCount() { 
      return images.length; 
     } 

     @Override 
     public Object getItem(int pos) { 
      return pos; 
     } 

     @Override 
     public long getItemId(int pos) { 
      return pos; 
     } 

     @Override 
     public View getView(final int pos, View convertView, ViewGroup parent) { 
      ImageView mIV = new ImageView(Test.this); 
      mIV.setBackgroundResource(images[pos]); 
      mIV.setLayoutParams(new Gallery.LayoutParams(gv.getWidth(), gv 
        .getHeight()/3)); 
      return mIV; 
     } 
    } 
} 

y mi archivo xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <GridView 
     android:id="@+id/gridview" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:gravity="center" 
     android:horizontalSpacing="10dp" 
     android:numColumns="1" 
     android:verticalSpacing="10dp" /> 

</LinearLayout> 
+0

Parece una gran respuesta, pero es completamente ilegible debido a la falta de formato en el código. Asegúrese de sangrar sus bloques de código en 4 espacios para que Stack Overflow lo muestre como código. ¡Definitivamente una respuesta atractiva una vez que hagas eso! –

+0

Gran respuesta. Ahorras mucho tiempo. – Smeet

Cuestiones relacionadas