使用JAVA代码将ImageViews添加到ScrollView

时间:2012-06-10 18:22:06

标签: java android xml

我尝试使用与viewos测验应用中的scrollview完全相同的imageview制作滚动视图。

我使用scrollview创建一个XML文件。

  

<ScrollView
    android:id="@+id/scrollView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/beige"
    > 
    <LinearLayout
        android:id="@+id/layout_level1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
    </LinearLayout>
</ScrollView>
     

而不是我写的:

public class Level1 extends Activity {

Level1Draw L1;  
LinearLayout l;
ScrollView s;


@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    L1 = new Level1Draw(this);
    setContentView(R.layout.level1);


    l = (LinearLayout) findViewById(R.id.layout_level1);


    l.addView(L1);


}

这是Level1Draw类:

private class Level1Draw extends View {

        Bitmap[][] logo_1 = {{BitmapFactory.decodeResource(getResources(), R.drawable.cellcom),BitmapFactory.decodeResource(getResources(), R.drawable.channel1),BitmapFactory.decodeResource(getResources(), R.drawable.doctor_gav)},
                {BitmapFactory.decodeResource(getResources(), R.drawable.golfnew),BitmapFactory.decodeResource(getResources(), R.drawable.globes_only_logo_acrobat),BitmapFactory.decodeResource(getResources(), R.drawable.foxgroup3)},
                {BitmapFactory.decodeResource(getResources(), R.drawable.hando),BitmapFactory.decodeResource(getResources(), R.drawable.hafenix),BitmapFactory.decodeResource(getResources(), R.drawable.haaretz)},
                {BitmapFactory.decodeResource(getResources(), R.drawable.laisha),BitmapFactory.decodeResource(getResources(), R.drawable.jerusalempostred),BitmapFactory.decodeResource(getResources(), R.drawable.hop)},
                {BitmapFactory.decodeResource(getResources(), R.drawable.maariv),BitmapFactory.decodeResource(getResources(), R.drawable.logo),BitmapFactory.decodeResource(getResources(), R.drawable.logodelta)},
                {BitmapFactory.decodeResource(getResources(), R.drawable.renuar),BitmapFactory.decodeResource(getResources(), R.drawable.ravbariah),BitmapFactory.decodeResource(getResources(), R.drawable.pelephone)},
                {BitmapFactory.decodeResource(getResources(), R.drawable.shilav),BitmapFactory.decodeResource(getResources(), R.drawable.sano),BitmapFactory.decodeResource(getResources(), R.drawable.reshet_tv)},
                {BitmapFactory.decodeResource(getResources(), R.drawable.steimatzky),BitmapFactory.decodeResource(getResources(), R.drawable.srigamish),BitmapFactory.decodeResource(getResources(), R.drawable.sport5)},
                {BitmapFactory.decodeResource(getResources(), R.drawable.tambur),BitmapFactory.decodeResource(getResources(), R.drawable.supersal),BitmapFactory.decodeResource(getResources(), R.drawable.superpharm)},
                {BitmapFactory.decodeResource(getResources(), R.drawable.yediot),BitmapFactory.decodeResource(getResources(), R.drawable.walla),BitmapFactory.decodeResource(getResources(), R.drawable.tzometsfarim)},
                };

        public Level1Draw(Context context) {
            // TODO Auto-generated constructor stub
            super(context);


        }



        @Override
        protected void onDraw(Canvas canvas) {  
            // TODO Auto-generated method stub
            super.onDraw(canvas);
            for(int i=0;i<10;i++){
                for(int j=0;j<3;j++){
            canvas.drawBitmap(logo_1[i][j], 60*(j+1)+80*j, 60*(i+1)+80*i, null);
                }
            }

        }




    }

如果我在添加L1视图时写出特定的宽度和高度,我可以在屏幕上看到视图但不能看到滚动视图,否则它不起作用。

1 个答案:

答案 0 :(得分:0)

你的“Level1Draw”类没有实现onMeasure,所以它不知道告诉它的父母有关所需大小的内容,并且在创建它时也没有layoutParams。

简而言之,自定义视图比仅仅绘制它需要更多的努力。

在任何情况下,为什么不在其中使用带有imageViews的listView,而不是使用包含它的scrollView的linearLayout?它的速度更快,更容易,内存更高效(想象一下,为了拥有100个imageViews,你会做些什么......)。

了解更多信息,请观看此视频:

http://www.youtube.com/watch?v=wDBM6wVEO70