0

ユーザーがボタンをタップして SD カードにアクセスできるようにする機能を作成しようとしています。ユーザーが画像を選択すると、ボタンのある画面に戻り、画像が で表示されますImageView。ユーザーがボタンをもう一度タップすると、ユーザーはギャラリーに戻ります。今回ユーザーが画像を選択すると、最初の の右側に表示されるはずImageViewです。私はこの件に関するほとんどすべての回答を読み、すべてを試しました。どういうわけか、「完全に機能する」すべてを試しているようですが、どういうわけかうまくいきません。毎回、最初の画像を配置すると左上隅に表示され、次に 2 番目の画像を配置すると最初の画像の上に表示されます。私は何を間違っていますか?私はばかで、ただする必要があるだけだと教えてください(空欄に記入してください)。これが私のコードです:

public class PictureSelector extends Activity {

    final int PIC_CODE = 12345;
    int picCounter = 0;
    ImageView[] imgViewArray = new ImageView[10];

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_picture_selector);
        Button bGallery = (Button) this.findViewById(R.id.bGallery);
        bGallery.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
                photoPickerIntent.setType("image/*");
                startActivityForResult(photoPickerIntent, PIC_CODE);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode,
            Intent imageReturnedIntent) {
        super.onActivityResult(requestCode, resultCode, imageReturnedIntent);

        if (requestCode == PIC_CODE) {
            if (resultCode == RESULT_OK) {
                Uri selectedImage = imageReturnedIntent.getData();
                InputStream imageStream = null;
                try {
                    imageStream = getContentResolver().openInputStream(
                            selectedImage);
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                Bitmap yourSelectedImage = BitmapFactory
                        .decodeStream(imageStream);

                if (picCounter == 0) {
                    RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
                            100, 100);
                    layoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP,
                            RelativeLayout.TRUE);
                    layoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT,
                            RelativeLayout.TRUE);
                    imgViewArray[picCounter] = new ImageView(
                            PictureSelector.this);
                    imgViewArray[picCounter].setImageBitmap(yourSelectedImage);
                    imgViewArray[picCounter].setId(picCounter);
                    this.addContentView(imgViewArray[picCounter], layoutParams);
                    picCounter++;
                } else {
                    RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
                            100, 100);
                    layoutParams.addRule(RelativeLayout.RIGHT_OF,
                            imgViewArray[picCounter - 1].getId());
                    imgViewArray[picCounter] = new ImageView(
                            PictureSelector.this);
                    imgViewArray[picCounter].setImageBitmap(yourSelectedImage);
                    imgViewArray[picCounter].setId(picCounter);
                    this.addContentView(imgViewArray[picCounter], layoutParams);
                    picCounter++;
                }
            }
        }
    }
}

関連する場合に備えて、XML を次に示します。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/rlGallery"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:id="@+id/bGallery"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="50dp"
        android:text="Gallery" />
</RelativeLayout>
4

1 に答える 1

0

http://developer.android.com/guide/topics/ui/declaring-layout.html ここでは、さまざまなタイプのレイアウトについて読む必要があります

于 2013-03-06T00:19:42.807 に答える