2013-04-04 4 views
0

Я пытаюсь заполнить LinearLayout/Relative, что угодно, со многими изображениями. Uncontable.Заполнение макета X-изображений

Это моя реализация:

<ScrollView 
     android:id="@+id/scrollView1" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_below="@+id/header" 
     android:layout_centerHorizontal="true" > 

     <LinearLayout 
      android:id="@+id/marcasImages" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" > 
     </LinearLayout> 
</ScrollView> 

Так что я добавить одно изображение несколько раз:

for (int i=0; i<10; i++){ 
    ImageView imatgeExemple = new ImageView(this.getApplicationContext()); 
    imatgeExemple.setImageResource(R.drawable.imageexample); 
    contenidorImatgesGaleria.addView(imatgeExemple); 
} 

contenidorImatgesGaleria является marcasImages.

Но в результате я получаю один ряд изображений X (X = столько изображений, сколько может быть заполнено по его разрешению). Так, например, если я делаю этот цикл в 1k раз, отображаются только 4 изображения.

Я хотел бы иметь столько строк, сколько необходимо.

Это то, что происходит:

enter image description here

И это то, что я пытаюсь достичь:

enter image description here

Я пытался использовать GridLayout, но ничего не изменилось.

<GridLayout 
    android:id="@+id/marcasImages" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 
</GridLayout> 

Любая идея, с какой компоновкой следует использовать?

+1

Вы попробовали gridview. поставьте этот код здесь. –

+0

@DhavalSodhaParmar gridLayout, а не gridview. – Reinherd

+1

вы хотите показывать изображения. затем используйте gridview, зачем использовать этот тип материала. потому что вам нужно делать все, начиная с кодирования, например, фиксируя строку и столбцы. что когда-либо для проверки gridlayout: http://android-developers.blogspot.in/2011/11/new-layout-widgets-space-and-gridlayout.html и http://stackoverflow.com/q/11863329/1168654 и –

ответ

1

Вы можете использовать GridView, чтобы достичь того, что вы пытаетесь сделать.

GridView очень похож на ListView. У вас есть адаптер (который может быть costum один), и вы устанавливаете адаптер.

Таким образом, вам нужно:

Добавить GridView в макете

<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/gridview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:columnWidth="90dp" 
    android:numColumns="auto_fit" 
    android:verticalSpacing="10dp" 
    android:horizontalSpacing="10dp" 
    android:stretchMode="columnWidth" 
    android:gravity="center"/> 

Определите адаптер Costum, который содержит изображения

public class ImageAdapter extends BaseAdapter { 
    private Context mContext; 

    public ImageAdapter(Context c) { 
     mContext = c; 
    } 

    public int getCount() { 
     return mThumbIds.length; 
    } 

    public Object getItem(int position) { 
     return null; 
    } 

    public long getItemId(int position) { 
     return 0; 
    } 

    // create a new ImageView for each item referenced by the Adapter 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ImageView imageView; 
     // if it's not recycled, initialize some attributes 
     if (convertView == null) { 
      imageView = new ImageView(mContext); 
      imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); 
      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      imageView.setPadding(8, 8, 8, 8); 
     } else { 
      imageView = (ImageView) convertView; 
     } 

     imageView.setImageResource(mThumbIds[position]); 
     return imageView; 
    } 

    // references to our images 
    private Integer[] mThumbIds = { 
     R.drawable.sample_2, R.drawable.sample_3, 
     R.drawable.sample_4, R.drawable.sample_5, 
     R.drawable.sample_6, R.drawable.sample_7, 
     R.drawable.sample_0, R.drawable.sample_1, 
     R.drawable.sample_2, R.drawable.sample_3, 
     R.drawable.sample_4, R.drawable.sample_5, 
     R.drawable.sample_6, R.drawable.sample_7, 
     R.drawable.sample_0, R.drawable.sample_1, 
     R.drawable.sample_2, R.drawable.sample_3, 
     R.drawable.sample_4, R.drawable.sample_5, 
     R.drawable.sample_6, R.drawable.sample_7 }; 
} 

установить на этот Costum адаптер, в котором хранятся изображения в вашей деятельности, ет

GridView gridview = (GridView) findViewById(R.id.gridview); 
gridview.setAdapter(new ImageAdapter(this)); 

Обратите внимание, что я вернулся и копия вставленный из ссылки я предоставил. У вас там больше информации.

+0

Спасибо. Я уже в документации Google: D – Reinherd

+0

Нет проблем. Я верю, что вы найдете все там. Самая сложная часть, если нужно знать, какой контроль нужен. Я просто вставил, потому что страница может быть перемещена или что-то в этом роде. –

+0

Хорошо, реализовано и работает. Именно то, что мне нужно. Трудно для начинающего знать, какой контроль использует на ранних этапах обучения. – Reinherd

Смежные вопросы