3

我在视图寻呼机中有一个图像视图来显示来自 url 的一些图像,如下面的屏幕截图所示,

在此处输入图像描述 但是,图像应该被填充(应该占据完整的视图分页空间)。但是在我的情况下发生的事情是图像显示在中心,即使我将布局参数设置为填充父级。

我用图像视图返回布局的片段:

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>

当图像仍在从 url 加载时,我将显示一些进度,如动画,一旦加载,我将在 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

4 回答 4

6

尝试将 ScaleType 为您的 imageView 设置为 CENTER_CROP

imageView.setScaleType(CENTER_CROP)

另外,在将 ImageView 添加到 LinearLayout 时,您可能需要添加一些布局参数

于 2013-04-30T11:08:08.773 回答
1

@suresh cheemalamudi 在您的上述代码中,您已经为寻呼机所在的线性布局指定了一个高度。而是使其与父级匹配。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);
于 2013-12-06T04:38:05.457 回答
0

尝试使用:

image.setAdjustViewBounds(true);
于 2013-04-30T10:56:27.720 回答
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"
   />
于 2014-08-06T09:22:43.020 回答