Android应用程序中布局最友好的用户选项

时间:2013-03-20 07:50:08

标签: android xamarin.android

所以我面临的问题不是主观地判断什么对用户最有利(我认为),但有哪些选项可用于说明定位。

想想某种团队运动应用程序,你可以为玩家添加小点(然后我可以用代表玩家的一些UI组件替换点)这样的pitch with player initials就可以拖动放下红色和蓝色的点

我用gridview尝试了这个,这很难,因为我需要有一定数量的行/列,当你在一个分辨率更高的手机时它们不会缩放,所以开始攻击“自定义组件” “感觉我正在重新发明轮子。

有没有比写我自己的组件更好的选择?

如果有任何不同,我使用的是xamarin.android

1 个答案:

答案 0 :(得分:6)

我使用针对集合绑定的FrameLayout的MvvmCross数据绑定来实现这一点。

此方法的核心使用父TranslationX内父级TranslationY内的ViewFrameLayout属性。

父母是:

<?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肯定可以改进 - 看一下主MvvmCross仓库中的LinearLayout代码如果您需要支持更改列表(例如ObservableCollection)。

结果看起来有点像:

enter image description here