2016-05-25 9 views
0

Я показываю один диалог, чтобы показать список изображений и выбрать один из них. Я создал адаптер для установки изображений в виде сетки.Как выровнять изображения в виде сетки программно?

Я воспользовался этой ссылкой: http://www.tutorialspoint.com/android/android_grid_view.htm, чтобы получить эту идею.

Но теперь диалог показывает изображения очень далеко друг от друга и не выравнивается должным образом.

Диалог теперь, как показано ниже:

enter image description here

адаптер: Код диалогового

public class ImageAdapter extends BaseAdapter { 
    Context Context; 
    int [] imageId; 

    public ImageAdapter(Context context, int[] prgmImages) { 
     // TODO Auto-generated constructor stub 
     Context = context; 
     imageId = prgmImages; 

    } 

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

     imageView.setImageResource(imageId[position]); 
     return imageView; 
    } 
    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return imageId.length; 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 
    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

} 

шоу:

private void showAlertDialog() { 

    GridView gridView = new GridView(this); 

    int[] mThumbIds = { 
      R.drawable.roundicons05,R.drawable.roundicons08, 
      R.drawable.roundicons16,R.drawable.roundicons37, 
    }; 

    gridView.setAdapter(new ImageAdapter(CheckListActivity.this,mThumbIds)); 
    gridView.setNumColumns(3); 
    gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      // do something here 
     } 
    }); 

    // Set grid view to alertDialog 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setView(gridView); 
    builder.setTitle("Select icon"); 
    builder.show(); 

} 

Как выровнять это правильно, например, в центре, и 4 изображения в одной строке и т. д. Спасибо.

+0

я думаю, что он установлен, как это: imageView.setLayoutParams (новые GridView.LayoutParams (85,85)); , я попытался использовать здесь wrap-контент, но все же он показывает то же самое. @AdityaVyas –

ответ

0
<GridView 

    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:columnWidth="150dp" 
    android:gravity="center" 
    android:horizontalSpacing="10dp" 
    android:verticalSpacing="10dp" 
    android:listSelector="#fff" 
    android:numColumns="3" 
    android:scrollbars="none" 
    android:stretchMode="spacingWidthUniform" 
    android:paddingTop="10dp" 
    android:layout_margin="5dp"> 

</GridView> 

Чтобы установить эти свойства динамически, так как и сказал, что вы добавляете вид сетки динамически, то это, как вы можете установить эти свойства с помощью Java

mGridView.setGravity(Gravity.CENTER); 
    mGridView.setColumnWidth(150); 
    mGridView.setHorizontalSpacing(20); 
    mGridView.setVerticalSpacing(20); 
    mGridView.setNumColumns(3); 
    mGridView.setStretchMode(GridView.STRETCH_SPACING_UNIFORM); 
+0

Я создал сетку с программным обеспечением. У меня нет макета для него. как это сделать? @Adeel Turk –

+0

ok Позвольте мне проверить это решение –

0

попробовать

imageView.setLayoutParams(new GridView.LayoutParams(48,48)); 
+0

изображения стали очень крошечными с этим, и все еще есть пробел. @Shubham –

+0

изображения стали очень крошечными с этим, и все еще есть пробел. @Aditya Vyas –

+0

, потому что вы меняете высоту и ширину от 85 до 48. Попробуйте отрегулировать видимость –

0

я предлагаю вам попробовать с setAdjustViewBounds истинной. Это выровняет ImageView

+0

Я сохранил высоту и ширину как 85 и реализовал setAdjustViewBounds. Тем не менее он отображается так же, как и загруженное изображение. @Aditya Vyas –

+0

Вы пробовали гравитацию? –

+0

Да, я изменил вид сетки гравитации на центр, так что теперь он пришел в центр, но все же изображения имеют больше промежутков между ними. gridView.setGravity (Gravity.CENTER); @Aditya Vyas –

1

Чтобы показать правильную ImageView, сделать файл макета XML и применять правильное заполнение и поля и раздувать этот XML в методе GetView адаптера Как это:

Ваш макет XML grid_item.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

<ImageView 
    android:id="@+id/image" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

</LinearLayout> 

метод GetView Adapter в:

@Override 
public View getView(int position, View convertView, ViewGroup parent) 
{ 
    ImageView imageView; 

    if (convertView == null) 
    { 
     LayoutInflater infalInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = infalInflater.inflate(R.layout.grid_item, null); 
     imageView = (ImageView) convertView.findViewById(R.id.imgDoc); 
     convertView.setTag(viewHolder); 
    } 
    else 
    { 
     imageView = (ImageView) convertView; 
    } 

imageView.setImageResource(imageId[position]);  
return convertView; 
    } 

для более правильного расположения применения ч orizontalSpacing и verticalSpacing в Gridview.

android:horizontalSpacing="10dp" 
    android:verticalSpacing="10dp" 
+0

Я создал сетку с программным обеспечением. У меня нет макета для него. как это сделать? @Giteeka Sawlani –

+0

Если у вас нет макета для макета gridview, тогда все в порядке. Но я говорю создать макет для ImageView, который я показал в ответ. –

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

  • Нет связанных вопросов^_^