夸大的图像浏览量要放入画廊,这不是合适的尺寸
-
03-10-2019 - |
题
我正在尝试夸大图像视图,该图像视图缩放可以在画廊中显示的可绘制图。我的夸大视图的代码似乎可以正常工作,除了不应用ImageView的属性。具体而言,充气的ImageView没有通过XML中的Android:布局参数设置的宽度/高度。
有人可以告诉我我做错了什么吗?
我想在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>
我用来夸大图像视图的片段是:
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;
}
解决方案
诀窍只是使用以下版本的 inflate()
:
inflater.inflate(R.layout.gallery_item, parent, false);
最后两个参数是强制性的。如果您将“ null”作为父,膨胀者不知道要创建哪种类型的布局参数,因此忽略了所有类型 android:layout_
XML属性。最后一个参数只是告诉Alfter不要立即将夸大的视图添加到父母。如果您通过真实(至少在适配器的内部 getView()
方法),坏事将发生。
其他提示
我不确定,但这可能起作用。在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;
}
顺便说一句,您应该优化它,以检查转换视图是否为null以回收视图。检查一下: http://code.google.com/events/io/2009/sessions/turbochargeuiandroidfast.html
不隶属于 StackOverflow