【问题标题】:Android - image view inside view pager issuesAndroid - 视图寻呼机问题内的图像视图
【发布时间】:2014-09-18 16:24:23
【问题描述】:

我在视图寻呼机内有一个图像视图,用于显示来自 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();
            }

总而言之,我想要的是,视图寻呼机内的图像应该水平和垂直填充视图寻呼机内的完整空间。知道怎么做吗?

【问题讨论】:

  • 亲爱的,你怎么解决这个问题?我有同样的问题,但使用 coordinatorlayout 和内容...

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


【解决方案1】:

尝试为你的 imageView 设置 ScaleType 为 CENTER_CROP

imageView.setScaleType(CENTER_CROP)

另外,也许你需要在添加 ImageView 到 LinearLayout 时添加一些布局参数

【讨论】:

  • CENTER_CROP 工作,我什至尝试为 imageview 设置布局参数。但到目前为止还没有运气。
  • 很抱歉听到这个消息。您需要在 viewpager 中为线性布局和图像视图使用匹配父布局参数。实现这一目标的最简单方法是使用 xml 布局资源。那么 CENTER_CROP 可能会有所帮助。
【解决方案2】:

@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);

【讨论】:

    【解决方案3】:

    尝试使用:

    image.setAdjustViewBounds(true);
    

    【讨论】:

    • 它有什么改变吗?如果没有,请确保作为父视图或与 imageView 相邻的视图的填充或边距不会干扰您尝试实现的布局。您也可以尝试手动添加 imageView 并查看它在编辑器中的外观。
    • 这里是上述活动的完整 xml 代码。你觉得这里有什么问题吗? pastebin.com/7AAMWuvP
    • 仅供参考,这只发生在三星galaxy s4中,其他设备都可以正常工作。
    【解决方案4】:

    好的。实际可行的解决方案是:

            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"
       />
    

    【讨论】:

    • 你的 mScreenWidth 值是多少?
    • 设备屏幕的当前宽度(取决于旋转)。
    • 对不起,我不记得我在哪里用过,现在也找不到了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-02
    • 1970-01-01
    相关资源
    最近更新 更多