Ich arbeite an einem Fragment, das ein Bild aus dem Internet laden, die Größe ändern und es dann dem Benutzer anzeigen soll. Ziel ist es, das Bild später für eine GridView zu verwenden. Aber ich kann nicht scheinen, dass die Größenänderung funktioniert. Ich bin seit ein paar Stunden festgefahren und habe verschiedene Methoden ohne Glück ausprobiert.Bildgröße ändern, bevor es in ImageView angezeigt wird
Hier ist mein Code:
VaultFragment.cs:
using Android.OS;
using Android.Views;
using SupportFragment = Android.Support.V4.App.Fragment;
using Android.Support.V4.Widget;
using System.Collections.Generic;
using Android.Widget;
using System.Net;
using System;
using System.IO;
using Android.Graphics;
namespace Test_android.Fragments
{
public class VaultFragment : SupportFragment
{
// Global variables
private SwipeRefreshLayout gSwipeRefreshLayout;
ImageView imageview;
public override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
}
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
// return our custom view for this fragment
View view = inflater.Inflate(Resource.Layout.Vault, container, false);
// Add SwipeRefreshLayout
gSwipeRefreshLayout = view.FindViewById<SwipeRefreshLayout>(Resource.Id.swipeLayout);
imageview = new ImageView(view.Context);
DownloadRemoteImageFile();
return view;
}
private async void DownloadRemoteImageFile()
{
WebClient webClient = new WebClient();
var url = new Uri("https://logo.clearbit.com/cnn.com");
byte[] bytes = null;
try
{
bytes = await webClient.DownloadDataTaskAsync(url);
}
catch (Exception e)
{
Console.WriteLine("Error: " + e.ToString());
return;
}
MemoryStream ms = new MemoryStream(bytes);
BitmapFactory.Options options = new BitmapFactory.Options();
options.InJustDecodeBounds = false;
int sampleSize = options.OutWidth/100;
options.OutWidth = 57;
options.OutHeight = 57;
Bitmap bitmap = BitmapFactory.DecodeStream(ms, null, options);
//imageview.LayoutParameters = new LinearLayout.LayoutParams(57,57);
var f = imageview.LayoutParameters;
imageview.SetImageBitmap(bitmap);
gSwipeRefreshLayout.AddView(imageview);
}
}
}
Vault.axml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/swipeLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.widget.SwipeRefreshLayout>
Dies ist, wie es aussieht, wenn ich es laufen Auffüllen der ganze Bildschirm:
Leider machte keine der Lösungen einen Unterschied. – rasperryPi
Was macht meinen Code in Ihrem Programm? Wenn Sie Zeile für Zeile debuggen und Bitmap öffnen, ist es am kleinsten oder nicht? – user7575308
versuchen Sie, auf "Menü" zu schauen, wenn nicht auf FitXY oder etwas Similar Skala-Typ eingestellt – user7575308