所以我面临的问题不是主观判断什么对用户最有利(我认为),而是有哪些选项可用于说明定位。
想想某种团队运动应用程序,您可以在其中为球员放置小点(然后我可以用一些代表球员的 UI 组件替换这些点),您可以在其中拖放红色和蓝色点
我用gridview尝试了这个,这非常困难,因为我需要设置一定数量的行/列,并且当你使用分辨率更高的手机时它们不会缩放,所以开始破解“自定义组件”感觉就像我在重新发明轮子。
有比编写自己的组件更好的选择吗?
如果有什么不同,我正在使用 xamarin.android
所以我面临的问题不是主观判断什么对用户最有利(我认为),而是有哪些选项可用于说明定位。
想想某种团队运动应用程序,您可以在其中为球员放置小点(然后我可以用一些代表球员的 UI 组件替换这些点),您可以在其中拖放红色和蓝色点
我用gridview尝试了这个,这非常困难,因为我需要设置一定数量的行/列,并且当你使用分辨率更高的手机时它们不会缩放,所以开始破解“自定义组件”感觉就像我在重新发明轮子。
有比编写自己的组件更好的选择吗?
如果有什么不同,我正在使用 xamarin.android
我将使用 MvvmCross 数据绑定针对集合绑定的 FrameLayout 来实现这一点。
该方法的核心使用在parent 中包含的 parent 中 child 的TranslationX
andTranslationY
属性。View
FrameLayout
父母是:
<?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 代码如果您需要对更改列表的支持(例如 ObservableCollection),请参考主要的 MvvmCross 存储库。
结果看起来有点像: