4

電子書籍のように、横軸でスクロールできるアクティビティが 1 つある Android タブレット 3.0 用のアプリケーションを開発しています。

そのために、レイアウトの Horizo​​ntalScrollView 内で RelativeLayout を使用しています。XML は次のとおりです。

<?xml version="1.0" encoding="utf-8"?>

    <HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="800px"
    android:id="@+id/horizontalScroll"
    android:background="#C6D7D2" android:layout_height="600px">

    <RelativeLayout android:id="@+id/container" android:layout_width="fill_parent" android:layout_height="fill_parent">        
    </RelativeLayout>


</HorizontalScrollView>

この xml ファイルは main.xml と呼ばれます。

私がJavaファイルでやっていることは次のとおりです。

setContentView(R.layout.main);
parent = (ViewGroup) findViewById(R.id.container);
View v = createView(); // Thats working for sure.
parent.addView(v);

ビュー V が画面に表示されません。しかし、私がそうするなら

addContentView(v)

ビュー v を画面に追加します (私の方法が機能することの証明です) が、Horizo​​ntalScrollView の外側にあるため、スクロールできません。私は何を間違っていますか?

更新:私はそれを試しましたが、うまくいきませんでした:

setContentView(R.layout.main);
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
ViewGroup parent = (ViewGroup) findViewById(R.id.container);
View v = new View(this);
v.setBackgroundColor(Color.BLUE);
parent.addView(v,params);

青色の背景が得られません。

4

4 に答える 4

23
HorizontalScrollView scrollView = (HorizontalScrollView) findViewById(R.id.scrollView1);

        LinearLayout topLinearLayout = new LinearLayout(this);
       // topLinearLayout.setLayoutParams(android.widget.LinearLayout.LayoutParams.FILL_PARENT,android.widget.LinearLayout.LayoutParams.FILL_PARENT);
        topLinearLayout.setOrientation(LinearLayout.HORIZONTAL); 

        for (int i = 0; i < 15; i++){



            final ImageView imageView = new ImageView (this);

            imageView.setTag(i);

            imageView.setImageResource(R.drawable.ic_launcher);

            topLinearLayout.addView(imageView);

            imageView.setOnClickListener(new OnClickListener()
            {

                @Override
                public void onClick(View v)
                {
                    // TODO Auto-generated method stub
                    Log.e("Tag",""+imageView.getTag());
                }
            });


        }

        scrollView.addView(topLinearLayout);


//      ImageView img=(ImageView)findViewById(R.id.imageView1);
//      final ImageLoader imageLoader = ImageLoader.getInstance();
//      
//      
//      
//      ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
//      .threadPoolSize(3)
//      .threadPriority(Thread.NORM_PRIORITY - 2)
//      .memoryCacheSize(1500000) // 1.5 Mb
//      .discCacheSize(50000000) // 50 Mb
//      .httpReadTimeout(10000) // 10 s
//      .denyCacheImageMultipleSizesInMemory()
//      .enableLogging() // Not necessary in common
//      .build();
//  // Initialize ImageLoader with configuration.
//  ImageLoader.getInstance().init(config);
//      
//      final DisplayImageOptions options = new DisplayImageOptions.Builder()
//      .showStubImage(R.drawable.ic_launcher)
//      .cacheInMemory()
//      .cacheOnDisc()
//      .build();
//      
//      imageLoader.displayImage("http://3.bp.blogspot.com/_Sd45ASngYHA/TVC78RORKoI/AAAAAAAAARk/y0GcNkTmb40/s1600/android+logo1.jpg",img,options);
//      
//      img.setOnClickListener(new OnClickListener()
//      {
//          
//          @Overridt
//          public void onClick(View v)
//          {
//              // TODO Auto-generated method stub
//              Dialog d =new Dialog(TestActivity.this);
//              d.setContentView(R.layout.dialog);
//          
//              d.setCancelable(true);
//              
//              ImageView d_img=(ImageView)d.findViewById(R.id.dialog_img);
////                d.setLayoutParams(L)
//              imageLoader.displayImage("http://3.bp.blogspot.com/_Sd45ASngYHA/TVC78RORKoI/AAAAAAAAARk/y0GcNkTmb40/s1600/android+logo1.jpg",d_img,options);
//              
//              d.show();
//              }
//      });
于 2012-06-02T06:55:21.127 に答える
2

Relativelayout の幅を に変更しwrap_contentます。

このメソッドを使用してビューを追加してみてください。

void addView (View child, ViewGroup.LayoutParams params)

編集: から
削除android:orientation="horizontal"HorizontalScrollView

于 2011-08-25T06:42:54.227 に答える
1

親を使用して、水平スクロールビューではなく相対レイアウトにビューを追加します

relativelayout でできるように、 horizo​​ntalscrollview オブジェクトで試してください

于 2011-08-25T06:43:00.263 に答える
0
Try this code.

ImageView imageView = new ImageView(this);
    imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
    imageView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));
    imageView.setBackgroundColor(Color.blue);


parent.addView(v,params);
于 2012-02-16T11:26:06.907 に答える