13

画像の src をバインドしようとしています。

私はこのようにMvxHttpImageViewを使ってみました

<Mvx.MvxHttpImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/iconeView"
                local:MvxBind="{'ImageUrl':{'Path':'ImgSrc'}}" />

public string ImgSrc
{
    get {return "@res/drawable/icon.png"; }
}

他の ImgSrc をいくつか試しましたが、まだ結果が得られません。

icon.png は Resources/Drawable ディレクトリにあり、AndroidResource です

どんな助けでも素晴らしいでしょう!ありがとう

4

4 に答える 4

16

MvvmCross の新しいバージョンは、描画可能なリソースへのバインディングをサポートしています。DrawableName バインディングを使用すると、ドローアブル名を含むビューモデルのプロパティに ImageView をバインドできます。

using System;
using Cirrious.MvvmCross.ViewModels;

namespace MyApp.ViewModels
{
    public class UserProfileViewModel : MvxViewModel
    {    
            // set this to the name of one of the files
            // in your Resources/drawable/drawable-xxxx folders
        private MyDrawable _myDrawable;
        public string MyDrawable { 
            get { return _myDrawable; }
            set {
                _myDrawable = value;
                RaisePropertyChanged (() => MyDrawable);
            }
        }
    }
}

そしてあなたのレイアウトで

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        local:MvxBind="DrawableName MyDrawable"/>

または、VMプロパティがint

于 2014-03-28T16:08:04.257 に答える
6

mvxhttpimageview は、http および「ディスク」から画像をロードする方法を認識しています。

悲しいことに、リソースからロードする方法がわかりません

ただし、画像を取得して静的コンテンツを読み込む方法はいくつかあります。

  1. 独自のカスタムバインディングを作成できます
  2. 標準のイメージビュー、Android アセットに保存されているイメージ、および mvx に組み込まれている「AssetImagePath」バインディングを使用できます。

最初に試すには、会議のサンプルを見てください - お気に入りボタンの背景が IsFavorite にバインドされている方法

2番目を行うには:

  • アセットフォルダーにアイコンを含めます - 例 /assets/icon1.png
  • ビルドアクションが AndroidAsset に設定されていることを確認してください
  • XML では、標準の ImageView と {'AssetImagePath':{'Path':'WhichAsset'}} のようなバインディング テキストを使用します。

実際の使用では、一般的にコンバーターも使用します。これは、State のようなビューモデル プロパティを LoadingState.Loading の値で「/loadingimages/loading.png」のようなアセット イメージ パスにマップするものです。


アセット バインディングのコードは、https://github.com/slodge/MvvmCross/blob/master/Cirrious/Cirrious.MvvmCross.Binding/Android/Target/MvxImageViewDrawableTargetBinding.csで確認できます。


申し訳ありませんが、回答にはこれ以上のコードは含まれていません - モバイルで回答しています

于 2012-10-14T09:48:51.047 に答える
4

ドローアブル名をビットマップに変換し、ビットマップを ImageView にバインドするコンバーターを作成しました。

コンバーター:

public class ImageNameToBitmapConverter : MvxValueConverter<string, Bitmap>
{
    protected override Bitmap Convert(string value, Type targetType, object parameter, CultureInfo culture)
    {

        var topActivity = Mvx.Resolve<IMvxAndroidCurrentTopActivity>();

        var bm = BitmapFactory.DecodeResource(topActivity.Activity.Resources, GetResourceId(value, "drawable", topActivity));

        return bm;
    }

    private static int GetResourceId(string variableName, string resourceName, IMvxAndroidCurrentTopActivity topActivity)
    {
        try
        {
            return topActivity.Activity.Resources.GetIdentifier(variableName, resourceName, topActivity.Activity.PackageName);
        }
        catch (Exception)
        {
            return -1;
        }
    }
}

XML ビュー:

<ImageView
    local:MvxBind="Bitmap Icon, Converter=ImageNameToBitmap"
    android:layout_width="100dp"
    android:layout_height="100dp" />

Icon私がバインドしているプロパティは、「icon_name」のような文字列です。ここicon_name.pngで、Android プロジェクトのResources/drawable

于 2016-07-19T08:15:20.797 に答える