Android - 图像查看内部查看分页器问题

时间:2013-04-30 10:51:31

标签: android android-layout imageview android-viewpager layoutparams

我在视图寻呼机内部有一个图像视图,用于显示来自网址的一些图像,如下面的屏幕截图所示,

enter image description here 但是,应填充图像(应占用整个视图寻呼机空间)。但在我的情况下发生的是,即使我设置布局参数来填充父级,图像也会显示在中心。

我的片段,我返回带有图像视图的布局:

ImageView image = new ImageView(getActivity());

        ImageLoader imgLoader = new ImageLoader(MainActivity.context);
        imgLoader.DisplayImage(imagePath, new Activity(), image);

        LinearLayout layout = new LinearLayout(getActivity());
        layout.setLayoutParams(new LayoutParams());

        layout.setGravity(Gravity.CENTER);
        layout.addView(image);

        return layout;

查看寻呼机:

<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="225dp"
            android:background="@color/white"
            android:orientation="vertical" >

            <android.support.v4.view.ViewPager
                android:id="@+id/pager"
                android:layout_width="fill_parent"
                android:layout_height="0dp"
                android:layout_weight="1" />
        </LinearLayout>

当图像仍然从网址加载时我会显示一些像动画一样的进度,一旦加载我将在imageview中设置图像

if (bitmap != null) {
                imageView.setBackgroundResource(0);
                imageView.setImageBitmap(bitmap);

            } else {
                imageView.setBackgroundResource(R.drawable.view_pager_progress);
                final AnimationDrawable startAnimation = (AnimationDrawable) imageView
                        .getBackground();
                imageView.setScaleType(ScaleType.CENTER);// i tried FIT_XY, dint work
                startAnimation.start();
            }

总结一下,我想要的是,视图内部寻呼机中的图像应该水平和垂直地填充视图寻呼机内的整个空间。知道怎么做吗?

4 个答案:

答案 0 :(得分:6)

尝试将imageView的ScaleType设置为CENTER_CROP

imageView.setScaleType(CENTER_CROP)

另外,也许,在将ImageView添加到LinearLayout

时,您需要添加一些布局参数

答案 1 :(得分:1)

@suresh cheemalamudi在上面的代码中,你给出了你的寻呼机所在的线性布局的高度。相反,它使它与parent相匹配。而xml代码应该如下所示

   <android.support.v4.view.ViewPager
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/view_pager"
     android:layout_width="match_parent"
     android:layout_height="match_parent" />

我的java代码用这种方式指定

  imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);

答案 2 :(得分:0)

尝试使用:

image.setAdjustViewBounds(true);

答案 3 :(得分:0)

行。实际工作的解决方案是:

        ImageView imageView = new ImageView(context);
        imageView.setLayoutParams(new ViewGroup.LayoutParams(mScreenWidth, ViewGroup.LayoutParams.WRAP_CONTENT));
        imageView.setAdjustViewBounds(true);
        imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);

        Drawable drawable = Drawable.createFromPath(Environment.getExternalStorageDirectory() + "/Android/data/" + getPackageName() + 
                "/"+....+".jpg");           
        if(drawable != null)                
            imageView.setImageDrawable(drawable);

        ((ViewPager) container).addView(imageView, 0);


<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/view_pager"
   android:layout_width="match_parent"
   android:layout_height="match_parent" 
   android:background="@android:color/black"
   />