1

私はそれのスクリーンショットを撮りました。奇妙な方法を表示しています: ここに画像の説明を入力

これがコードです。

GridAdapter:

public class GridViewAdapter extends BaseAdapter {

private Context mContext;
private ArrayList<Uri> mUrls;  
// references to our images

public GridViewAdapter(Context c, ArrayList<Uri> images) {
    mContext = c;
    this.mUrls = images;
}

public int getCount() {
    return mUrls.size();
}

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

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

public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater mInflater = (LayoutInflater) mContext.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
    ImageView inflatedImageView = (ImageView) mInflater.inflate(R.layout.imageview_amb_background, null);

    //ImageView imageView = new ImageView(mContext);

    inflatedImageView.setImageURI(mUrls.get(position));

    inflatedImageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);

    return inflatedImageView;
}

そして、inflatedImageViewこれは次のようなレイアウト インフレートです。

<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="120dp"
    android:layout_height="120dp"
    android:background="@drawable/bgimages" 
    android:maxWidth="120dp"
    android:padding="5dp">

</ImageView>

一方、xml ファイルに gridView があります。

<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="250dp"
android:horizontalSpacing="5dp"
android:numColumns="3"
android:verticalSpacing="5dp" >
</GridView>

したがって、この gridView を拡張し、いくつかの URI (正確には 3 つ) をループに追加します。追加したら、アダプターをグリッドビューに設定します。

ArrayList<Uri> uriFotos = new ArrayList<Uri>();
HashMap<Integer, ListItem> items = xmlList.getItems();
for (int i = 0; i<items.size();i++){
     ListItem itemActual = items.get(i);
     itemActual.getLogoSrc();
     uriFotos.add(Uri.parse(Environment.getExternalStorageDirectory().toString()+rutaFinsCarpetaClient+itemActual.getLogoSrc()));
 }
 gridViewInflated.setAdapter(new GridViewAdapter(this,uriFotos));
variableContent.addView(gridViewInflated);

画像は正しく「リンク」されています。

variableContentScrollView 内の LinearLayout であるため、グリッドはスクロール可能である必要があります。しかし、ご覧のとおり、いくつかのことが起こっています。

  • 身長がやばい。おっしゃる通りではないinflatedImageViewでしょうか。
  • スクロールが機能しません。まあ、うまくいきましたが、うまくいくまで指を動かして数回タップする必要があります。スクロールを停止すると、再び反応するまで同じプロセスを繰り返さなければなりません。(解決済み)

皆さんが私を助けてくれることを願っています。多くのレイアウトを変更し、幅と高さを変更しましたが、同じことが起こっています。

gridView に表示される画像は、1200x800px のようなものであることに注意してください。

小さい画像で同じコードを編集します。

ここに画像の説明を入力

4

1 に答える 1

2

画像ビューのサイズを wrap_content に設定しようとします:

android:layout_height="wrap_content"

120 dp の高さが本当に必要な場合は、画像の src を設定した後にこのサイズをリセットしてみてください。

 inflatedImageView.setImageURI(mUrls.get(position));

 inflatedImageView.setLayoutParams(new GridView.LayoutParams(120, 120));

また、画像を追加する前にscaleTypeを設定します(できればxmlで):

<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="120dp"
    android:layout_height="120dp"
    android:scaleType="centerInside"
    android:background="@drawable/bgimages" 
    android:maxWidth="120dp"
    android:padding="5dp">

</ImageView>
于 2013-05-21T08:21:44.560 に答える