0

ボタン、イメージビュー、ビエドビューでスクロールビューを作ろうとしています。

コードから動的に作成します。

動画付きのボタンを付けると、両方見れます。ボタンとimageViewと同じです。

私の問題は、videView と imageView がある場合です。両方あると、VidoView が表示されず、imageView しか表示されません。

助けてくれてありがとう:)

これが私のコードです:

XML スクロールビュー コード:

  <ScrollView
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true" >

       <RelativeLayout
           android:layout_width="fill_parent"
           android:layout_height="fill_parent" >

    <LinearLayout
        android:id="@+id/dateMain"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

    </LinearLayout>


   </RelativeLayout>   

</ScrollView>

私のJavaコード:

  private void addPics() {

            extras = getIntent().getExtras();
            String s = extras.getString("date");

            DataBaseMain data = new DataBaseMain(this);
            data.open();
            paths = data.getWorkOutPic(s);
            data.close();

            if(paths == null || paths.length < 1)
            return;

            LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);

            for(int i = 0; i < paths.length; i++){

                Bitmap yourSelectedImage = BitmapFactory.decodeFile(paths[i]);
                ImageButton pic = new ImageButton(this);
                pic.setImageBitmap(yourSelectedImage);
                pic.setAdjustViewBounds(true);
                pic.setLayoutParams(lp);
                pic.setId(i);
                pic.setOnLongClickListener(new OnLongClickListener() {
                    public boolean onLongClick(View arg0) {             
                        selectedPictrue = arg0.getId();
                        onButtonClickEvent(arg0);
                        return true;   
                    }
                });
            linear.addView(pic);
            }

            }

        private void addVideos() {

            extras = getIntent().getExtras();
            String s = extras.getString("date");

            DataBaseMain data = new DataBaseMain(this);
            data.open();
            videos = data.getWorkOutVideo(s);
            data.close();

            if(videos == null || videos.length < 1)
            return;

            LinearLayout linear = (LinearLayout) findViewById(R.id.dateMain);
            LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
            LayoutParams lp2 = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

            for(int i = 0; i < videos.length; i++){

                Button b = new Button(this);
                b.setLayoutParams(lp2);
                b.setText("Delete video");
                b.setId(i+50);
                linear.addView(b);
                b.setOnClickListener(this);

                VideoView video = new VideoView(this);
                video.setVideoPath(videos[i]);
                video.setLayoutParams(lp);
                video.setId(i+50);
                video.setMediaController(new MediaController(this));
                video.bringToFront();   
                linear.addView(video);
            }           
        }

        public void setLogView(String date){


        DataBaseMain dataBase = new DataBaseMain(this);
        dataBase.open();
        all = dataBase.dayLog(date);
        dataBase.close();

        if (all == null ||  all[0].length < 1 || all[3][0] == null || all[3][0].equals(""))
            return;

        LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

        for (int i = 0; i < all[0].length; i++){
            String temporay = "";

            for(int j = 0; j < all.length; j++)
                {   
                    temporay = temporay + " " + all[j][i];
                }

            Button mine = new Button(this);
            mine.setText(temporay);
            mine.setTextColor(getResources().getColor(R.color.black));
            mine.setBackgroundColor(color.transparent);
            mine.setLayoutParams(lp);
            mine.setId(i);
            mine.setOnClickListener(this);
            linear.addView(mine);
            //Toast.makeText(this, ""+i, Toast.LENGTH_SHORT).show();
        }
    }           
4

1 に答える 1

0

おそらく、ほとんどの LayoutParams の高さをLayoutParams.MATCH_PARENT. 「MATCH_PARENT」は、この要素の高さを親コンテナと同じ大きさにすることを意味します。レイアウトに関して何を達成しようとしているのか正確にはわからないので、最初に幅を WRAP_CONTENT に設定してそこから取得する以外の修正はお勧めできません。

于 2013-05-18T22:54:48.757 に答える