2

したがって、私が直面している問題は、ユーザーにとって何が最善かを主観的に判断することではなく(私は思う)、ポジショニングを説明するためにどのようなオプションが利用できるかということです。

ある種のチームスポーツアプリを考えてみてください。プレーヤー用に小さなドットを配置できます(その後、ドットをプレーヤーを表すUIコンポーネントに置き換えることができます)。このようなものプレーヤーのイニシャルでピッチで、赤と青のドットをドラッグアンドドロップできます。

グリッドビューでこれを試しましたが、行/列の数を設定する必要があり、解像度の高い電話を使用している場合はスケーリングされないため、かなり難しいので、「カスタムコンポーネント」をハッキングし始めました車輪の再発明をしているような気がします。

自分のコンポーネントを作成するよりも良いオプションはありますか?

違いがあれば、xamarin.androidを使用しています

4

1 に答える 1

6

コレクションにバインドされたFrameLayoutに対してMvvmCrossデータバインディングを使用してこれを実装します。

メソッドのこのコアは、親内に保持されている親内の子のプロパティTranslationXとプロパティを使用します。TranslationYViewFrameLayout

親は:

<?xml version="1.0" encoding="utf-8"?>
<pointsongrid.BindableFrameLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:local="http://schemas.android.com/apk/res/points.on.grid"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  local:MvxBind="ItemsSource Points"
  local:MvxItemTemplate="@layout/item"/>

リストアイテムは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res/points.on.grid"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    local:MvxBind="TranslationX X, Converter=X;TranslationY Y, Converter=Y"
  >
  <LinearLayout
    android:layout_width="20dp"
    android:layout_height="20dp"
    local:MvxBind="BackgroundColor Color, Converter=NativeColor"
  />      
  <TextView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    local:MvxBind="Text Player"
    />      
</LinearLayout>

コード全体はStackOverflowにとって少し長いので、デモンストレーション用の簡単なリポジトリを投稿しました-https: //github.com/slodge/MvvmCross-Players-そこにあるデータバインドされたFrameLayoutは確かに改善される可能性があります-のLinearLayoutコードを見てくださいリストの変更のサポートが必要な場合のいくつかのアイデアのメインMvvmCrossリポジトリ(例:ObservableCollection)。

結果は次のようになります。

ここに画像の説明を入力してください

于 2013-03-20T19:02:11.147 に答える