2

画像でいっぱいのグリッドビューがあり、グリッドビューの行はこのように列ごとに整列します

1_2_3

4_5_6

7_8_9

ただし、特定の行をオフセットして、このようなものを取得したい

1_2_3_

_4_5_6

7_8_9_

そのため、2 行目と不明な数の追加行が右に移動されます。

1 つの解決策は、複数のグリッドビューを作成し、それに応じてシフトすることですが、大量の行がある場合はうまくいきません。別の方法は、位置を使用して ImageAdapter のマージンを変更して行を取得することですが、クラッシュせずにそれを機能させることができませんでした。ImageAdapter で LayoutParams を編集しようとしても、このようなことを行う正しい方法ですか?

4

1 に答える 1

2

たとえば、次のように、2 つのタイプのビューを 2 つのレイアウトで使用できます。

アダプターでは、次を実装できます。

@Override
public int getViewTypeCount() {
  return 2;
}

@Override
public int getItemViewType(int position) {
 if (isImageLeft(position)) {
  return VIEW_TYPE_LEFT_IMAGE; //TODO: you should define it 
} else {
  return VIEW_TYPE_RIGHT_IMAGE;//TODO: you should define it
}    

@Override
public View getView(int position, View convertView, ViewGroup parent) {
  View view = convertView;
  if (view == null){
    if (getItemViewType(int position) == VIEW_TYPE_LEFT_IMAGE){
      view = inflater.inflate(R.layout.layout_image_left, null);//TODO: you should have set the reference of LayoutInflater
    }else{
      view = inflater.inflate(R.layout.layout_image_right, null);
    }    
  } 
  //.......
}

これらの2つのレイアウトファイルでは、LinearLayout(または必要に応じて他のレイアウト)を設定し、ImageViewをそれぞれ左マージンまたは右マージンで設定できます。例えば:

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

  <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_marginLeft="50dp" />
</LinearLayout>
于 2013-01-08T05:10:38.857 に答える