2016-05-25 1 views
0

画像のリストを表示してその中から1つを選択するダイアログを表示しています。私はグリッドビューで画像を設定するためのアダプタを作成しました。プログラムでグリッドビューでイメージを整列する方法は?

私はこのリンクに従っています: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(); 

} 

がどのように中央に例えばこれを適切に揃えることができ、 1列に4枚の画像があります。ありがとうございます。

+0

を通じてこれらのプロパティを設定することができる方法です。 imageView.setLayoutParams(新しいGridView.LayoutParams(85,85));私はここでコンテンツをラップしようとしましたが、それでも同じことを示しています。 @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> 

uはあなたが動的にグリッドビューを追加していることを言ったので、動的にこれらのプロパティを設定するには、これは私はそれがこのよう設定されていると思うあなたは、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

私はその解決策を確認することができます –

0

は、私はあなたが本当のsetAdjustViewBoundsで試すことをお勧め

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

これで画像が非常に小さくなり、まだギャップがあります。 @ Shubham –

+0

イメージはこれで非常に小さくなり、まだギャップがあります。 @Aditya Vyas –

+0

あなたは高さと幅を85から48に変更しています。それよりもadjustviewboundを試してみてください –

0

を試してみてください。これは、適切なImageViewのを表示するXMLレイアウトファイルを作成し、適切なパディングとマージンを適用するにはImageViewの

+0

高さと幅を85に保ち、setAdjustViewBoundsを実装しました。アップロードされた画像と同じように表示されます。 @Aditya Vyas –

+0

あなたは重力を試しましたか? –

+0

はい私はグリッドビューの重力を中心に変更しましたので、中心に来ましたが、まだ画像にはより大きな隙間があります。 gridView.setGravity(Gravity.CENTER); @Aditya Vyas –

1

を合わせると アダプタのGetViewメソッドこのよう でこのXMLを膨らませます。

あなたの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メソッド:Hを適用し、より適切なレイアウトのための

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

Gridviewのhorizo​​ntalSpacingとverticalSpacingです。

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

プログラムでグリッドビューを作成しました。私はそれのためのレイアウトを持っていない。これを行う方法? @Giteeka Sawlani –

+0

グリッドビューのレイアウト用のレイアウトがない場合は大丈夫です。しかし私はImageViewのレイアウトを作成して答えに示しています。 –

関連する問題