Android 要放入GalleryView的充气图像视图不是';尺寸不对

Android 要放入GalleryView的充气图像视图不是';尺寸不对,android,imageview,galleryview,Android,Imageview,Galleryview,我正在尝试膨胀一个ImageView,它可以缩放一个我可以在GalleryView中显示的可拉伸视图。我膨胀视图的代码似乎工作正常,只是没有应用ImageView的属性。具体来说,膨胀的ImageView没有我通过XML中的android:layout参数为其设置的宽度/高度 有人能告诉我我做错了什么吗 我想在dp中设置图像的宽度/高度,以便它在多屏幕dpi中的大小正确,并支持Android 1.5+。因此,我无法使用以下内容: i.setLayoutParams(new Gallery.Lay

我正在尝试膨胀一个ImageView,它可以缩放一个我可以在GalleryView中显示的可拉伸视图。我膨胀视图的代码似乎工作正常,只是没有应用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>

我不确定,但这可能有用。在xml中为imageview指定一个id(假设它是“@+id/image”:


顺便说一句,您应该通过检查convertView是否为空来优化它,以便循环使用视图。检查此项:

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


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

回收视图的好技巧。顺便说一句。我做了一些类似的东西,但使用了一个gridview,每个元素都有一个自定义布局:一个imageview和下面的一个文本。修改xml文件中的宽度和高度对我来说很有用。顺便说一句,你确定没有区别吗?试着为这两个元素添加类似于20dip的内容,然后检查如果您看到任何更改,请在尝试300dip之类的高值之后。目前,我使用DisplayMetrics.density.float den=mDisplayMetrics.density;convertView.setLayoutParams(new Gallery.LayoutParams((int)(den*150),(int)(den*116))破解了一个解决方案;
    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;
    }
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;
}
inflater.inflate(R.layout.gallery_item, parent, false);