1

スクロールビューに画像を追加したいのですが、使用しようとしたコードがあります:

        ScrollView sv = (ScrollView)findViewById( R.id.scrollView2);
        ImageView iv = new ImageView(this);
        iv.setImageDrawable( new BitmapDrawable( "PATH" ) );
        iv.setScaleType( ScaleType.CENTER_INSIDE );
        sv.addView( sv ); 

次の例外が発生します: java.lang.IllegalStateException: ScrollView は直接の子を 1 つだけホストできます

では、スクロールビューに画像を追加するにはどうすればよいですか?

追加されたコード: xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:background="#FF0000" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

        </LinearLayout>
    </ScrollView>

    <ScrollView
        android:id="@+id/scrollView2"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/scrollView1"
        android:background="#FFFF00" >

        <LinearLayout
            android:id="@+id/filesScrollerLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
        </LinearLayout>
    </ScrollView>

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="250dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:background="#FFFFFF"
        android:layout_toRightOf="@+id/scrollView2" />

</RelativeLayout>

そして最後に Activity onCreate でこのメソッドを呼び出します:

public void addImage(文字列パス){

            LinearLayout sv = (LinearLayout)findViewById( R.id.filesScrollerLayout);
        ImageView iv = new ImageView(this);
        iv.setImageDrawable( new BitmapDrawable( path ) ); 
        iv.setScaleType( ScaleType.CENTER_INSIDE );
        sv.addView( sv ); 

}

ありがとう。

4

1 に答える 1

9

これは役立つかもしれません..ScrollViewは複数の子を保持できないため、そのように指示します..他のすべてのビューをホストする単一の子が必要です..

<ScrollView>
<LinearLayout
android:id="@+id/child">
    <ImageView/>
    ...
    ...
</LinearLayout>
</ScrollView>

あなたの場合

LinearLayout child = (LinearLayout)findViewById( R.id.child);
        ImageView iv = new ImageView(this);
        iv.setImageDrawable( new BitmapDrawable( "PATH" ) );
        iv.setScaleType( ScaleType.CENTER_INSIDE );
        child.addView( sv ); 
于 2012-04-25T13:03:40.860 に答える