0

AndroidCameraフォルダーから水平スクロールビューに画像を動的に読み込んでいます。問題は、スクロールビューの最後(右側)に大きなスペースがあり、スクロールビュー(左側)にデータを入力しているときに画像が画面の前面から押し出されていることです。ロードされる画像が多いほど、スクロールビューの端のギャップが大きくなり、前面から押し出される画像が多くなります。

xmlは、親としては単なるスクロールビューであり、子としては線形レイアウトです。

<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:id="@+id/scrollView1"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:layout_gravity="center_horizontal" >
  <LinearLayout
    android:id="@+id/imageList"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:orientation="horizontal" >
  </LinearLayout>
</HorizontalScrollView>

コードは、非同期タスクを使用して画像をにロードしています。

private class loadImages extends AsyncTask<Context, ImageView, Boolean> {
  @Override
  protected Boolean doInBackground(Context... params) {
    File sdCard = Environment.getExternalStorageDirectory();
    dir = new File(sdCard.getAbsolutePath() + "/DCIM/Camera");
    dir.mkdirs();
    ImageView gtbImage = null;

    if (dir.isDirectory()) {
      String[] children = dir.list();
      for (int i = 0; i < children.length; i++) {
          File imageLocation = new File(dir.getAbsolutePath() + "/" + children[i]);
          Bitmap myBitmap = decodeFile(imageLocation, 250, 250);

          gtbImage = new ImageView(getApplicationContext());
          gtbImage.setImageBitmap(myBitmap);
          imageList = (LinearLayout) findViewById(R.id.imageList);

          LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.RIGHT);
          p.setMargins(5, 5, 5, 5);


          gtbImage.setLayoutParams(p);
          gtbImage.setPadding(1, 1, 1, 1);
          gtbImage.setBackgroundColor(Color.WHITE);
          gtbImage.setScaleType(ImageView.ScaleType.FIT_CENTER);
          publishProgress(gtbImage);
      }

    }

    return null;
  }

  protected void onProgressUpdate(ImageView... v) {
    imageList.addView(v[0]);
  }

これは、スクロールビューの終わりがどのように見えるかをよりよく説明するための画像です。最後の大きな空白部分に注意してください。画像が多いほど、そのスペースは大きくなります。

ここに画像の説明を入力してください

これに非常に困惑しているので、私はそれが欠けている単純なものだと確信していますが、何度も何度も調査した後、行き止まりになり、見てみるにはより賢い目が必要です:)

4

1 に答える 1

0

xmlのandroid:layout_gravity="center_horizontal"行を削除してみてください。HorizontalScrollView私はそれでしばらく前にいくつかの同様の問題を抱えていました。

android:fillViewPort="true"代わりに、ここで提案されているように、で使用できるか、ここHorizontalScrollViewで提案されているようにとの両方を使用できるはずですandroid:layout_gravity="center"android:gravity="center"LinearLayout

于 2013-03-06T21:50:57.380 に答える