我正在开发一个Android应用程序,它在PageViewer中的ImageView中显示动物的图片。在大多数手机上,一切似乎都很好。但是,在我的S7上(显示分辨率高于图片的分辨率),我无法拉伸图片来扩展设备宽度。
imageView还附有一个Xamarin photoView附件,但我认为它没有任何效果。我试图删除它,它仍然是相同的。
我已经尝试过android:adjustViewBounds和所有android:scaleType,不幸的是它没有帮助。
这是我的xml代码: 部分活动xml:
<fieldguideapp.droid.MyViewPager
android:id="@+id/pagerAnimalProfile"
android:layout_width="match_parent"
android:background="#000000"
android:layout_height="wrap_content" />
PagerLayout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:id="@+id/imgPagerLayoutImageView" />
<RelativeLayout
android:id="@+id/relLayoutImgPagerImageDesc"
android:orientation="horizontal"
android:layout_width="match_parent"
android:gravity="center"
android:layout_height="wrap_content"
android:background="#FFFFFFFF"
android:layout_gravity="bottom">
<TextView
android:text="Image desc"
android:textAppearance="?android:attr/textAppearanceSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FFFFFFFF"
android:textColor="#FF000000"
android:id="@+id/txtImgPagerImageDescription"
android:layout_alignParentLeft="true" />
<LinearLayout
android:id="@+id/linLayoutImgPagerIndicator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_centerHorizontal="true"
android:layout_alignBottom="@id/txtImgPagerImageDescription" />
<TextView
android:text="Image credit"
android:textAppearance="?android:attr/textAppearanceSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FFFFFFFF"
android:textColor="#FF000000"
android:id="@+id/txtImgPagerImageCredit"
android:layout_alignParentRight="true"
android:layout_alignBottom="@id/linLayoutImgPagerIndicator" />
</RelativeLayout>
</LinearLayout>
改变寻呼机高度的部分代码:
// To specify the height of the pager, select the highest child
protected override void OnMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
int height = 0;
for (int i = 0; i < ChildCount; i++)
{
View child = GetChildAt(i);
child.Measure(widthMeasureSpec, MeasureSpec.MakeMeasureSpec(0, MeasureSpecMode.Unspecified));
int h = child.MeasuredHeight;
if (h > height) height = h;
}
if (Resources.Configuration.Orientation == Android.Content.Res.Orientation.Portrait)
{
heightMeasureSpec = MeasureSpec.MakeMeasureSpec(height, MeasureSpecMode.Exactly);
}
base.OnMeasure(widthMeasureSpec, heightMeasureSpec);
}
编辑:这是我得到的:
我希望得到任何帮助或建议。感谢
答案 0 :(得分:0)
我最终使用Bitmap.CreateScaledBitmap()
方法手动调整图片大小以适合屏幕尺寸,然后使用ImageView.SetImageDrawable()
进行设置,它完美无缺。我需要在之前和之后调用GC.Collect()
以避免OutOfMemoryException。
虽然这不太理想,但确实有效。