【问题标题】:Inflated ImageView to put in GalleryView isn't the right size放入 GalleryView 的膨胀 ImageView 尺寸不合适
【发布时间】:2010-05-19 21:57:30
【问题描述】:

我正在尝试为可缩放可在 GalleryView 中显示的 Drawable 的 ImageView 充气。我膨胀视图的代码似乎工作正常,除了 ImageView 的属性没有应用。具体来说,膨胀的 ImageView 没有我通过 XML 中的 android:layout 参数为其设置的宽度/高度。

谁能告诉我我做错了什么?

我想在 dp 中设置图像的宽度/高度,以便它在多个屏幕 dpi 中是正确的尺寸并支持 Android 1.5+。结果我不能使用类似的东西:

i.setLayoutParams(new Gallery.LayoutParams(150, 116)

我的布局定义是:

<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="150dp" android:layout_height="116dp"
    android:background="@drawable/gallery_item_background"
    android:scaleType="fitXY" />
</ImageView>

我用来给 ImageView 充气的 sn-p 是:

    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = getLayoutInflater();
        ImageView i = (ImageView) inflater.inflate(R.layout.gallery_item, null);
        i.setImageResource(mImageIds.get(position));
        i.setScaleType(ImageView.ScaleType.FIT_XY);

        return i;
    }

【问题讨论】:

  • 目前我使用 DisplayMetrics.density 破解了一个解决方案。浮动书房= mDisplayMetrics.密度; convertView.setLayoutParams(new Gallery.LayoutParams((int)(den * 150), (int)(den * 116)));

标签: android imageview galleryview


【解决方案1】:

诀窍就是使用以下版本的inflate()

inflater.inflate(R.layout.gallery_item, parent, false);

最后两个参数是必需的。如果您将“null”作为父级传递,充气器不知道要创建什么类型的布局参数,因此会忽略所有android:layout_ XML 属性。最后一个参数只是告诉充气器不要立即将充气视图添加到父级。如果你通过 true(至少在 Adapter 的 getView() 方法中),就会发生不好的事情。

【讨论】:

    【解决方案2】:

    我不确定,但这可能有效。在你的 xml 中为你的 imageview 提供一个 id(比如“@+id/image”:

    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = getLayoutInflater();
        View view = (View) inflater.inflate(R.layout.gallery_item, null);
        ImageView i = (ImageView) view.findViewById(R.id.image);
        i.setImageResource(mImageIds.get(position));
        i.setScaleType(ImageView.ScaleType.FIT_XY);
    
        return view;
    }
    

    顺便说一句,您应该优化它,检查 convertView 是否为 null 以回收视图。检查这个:http://code.google.com/events/io/2009/sessions/TurboChargeUiAndroidFast.html

    【讨论】:

    • BTW 回收视图的好技巧。
    • 我做了一些类似的事情,但使用了一个网格视图,每个元素都有一个自定义布局:一个图像视图和一个下面的文本。修改 xml 文件中的宽度和高度对我有用。顺便说一句,您确定没有区别吗?尝试将两者都设置为 20dip 之类的值,并检查您是否看到任何变化,然后尝试使用 300dip 之类的高值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-29
    • 2013-05-17
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多