Xamarin.Forms 仿照京东搜索记录控件

在项目中遇到这样一个需求,仿照京东搜索记录。在Xamarin.Forms中有什么控件可以实现呢?

首先,来分析这个控件的特点:

  1. 数据量不大
  2. 每条记录字数长度不一,使得每条记录呈现的样式长度不一

经过如上分析,由于数据量不大,且界面样式并不是整齐划一,所以用不着使用ListView,查看官方文档后,发现FlexLayout即可满足我们的需求。

FlexLayout这个控件的详细说明可以看微软的官方文档。

这里主要利用了FlexLayout的一些相关特性:

  1. AlignContent
  2. AlignItems
  3. JustifyContent
  4. Wrap

demo如下代码所示:

public class FlowLayout: StackLayout{private FlexLayout _flexLayout;public Action<int, object> ItemTapped;public FlowLayout(){_flexLayout = new FlexLayout{AlignContent = FlexAlignContent.Start,AlignItems = FlexAlignItems.Start,JustifyContent = FlexJustify.Start,Wrap = FlexWrap.Wrap,};this.Children.Add(_flexLayout);}#region BindablePropertypublic static readonly BindableProperty ItemsSourceProperty =BindableProperty.Create(nameof(ItemsSource), typeof(IList), typeof(FlowLayout), default(IList),propertyChanged: ItemsSourcePropertyChanged);private static void ItemsSourcePropertyChanged(BindableObject bindable, object oldValue, object newValue){if (bindable is FlowLayout view){view.UpdateViews();}}public IList ItemsSource{get { return (IList)GetValue(ItemsSourceProperty); }set { SetValue(ItemsSourceProperty, value); }}#endregionpublic void UpdateViews(){_flexLayout.Children.Clear();foreach(var item in ItemsSource){_flexLayout.Children.Add(CreateItem(item.ToString()));}}private StackLayout CreateItem(string content){var label = new Label{Text = content,TextColor = Color.Black,Margin = new Thickness(10,6,10,6), FontSize = 12,MaxLines = 1,VerticalOptions = LayoutOptions.Center,HorizontalOptions = LayoutOptions.Center,};var stack = new StackLayout(){BackgroundColor = Color.LightGray,Margin = new Thickness(0,6,12,6),};stack.Children.Add(label);var tapGestureRecognizer = new TapGestureRecognizer();tapGestureRecognizer.Tapped += TapGestureRecognizer_Tapped;stack.GestureRecognizers.Add(tapGestureRecognizer);return stack;}private void TapGestureRecognizer_Tapped(object sender, EventArgs e){try{var index = _flexLayout.Children.IndexOf(sender as StackLayout);var o = ItemsSource[index];ItemTapped?.Invoke(index, o);}catch { }}}

效果图:

这样就基本实现了搜索记录。

转载于:https://www.cnblogs.com/devin_zhou/p/10548244.html

Xamarin.Forms 仿照京东搜索记录控件相关推荐

  1. Xamarin XAML语言教程构建ControlTemplate控件模板 (四)

    Xamarin XAML语言教程构建ControlTemplate控件模板 (四) 2.在页面级别中构建控件模板 如果开发者要在页面级别中构建控件模板,首先必须将ResourceDictionary添 ...

  2. Xamarin XAML语言教程构建ControlTemplate控件模板 (三)

    Xamarin XAML语言教程构建ControlTemplate控件模板 (三) (3)打开MainPage.xaml.cs文件,编写代码,实现主题的切换功能.代码如下: using System; ...

  3. Xamarin XAML语言教程构建ControlTemplate控件模板 (二)

    Xamarin XAML语言教程构建ControlTemplate控件模板 (二) (2)打开MainPage.xaml文件,编写代码,将构建的控件模板应用于ContentView中.代码如下: &l ...

  4. Xamarin XAML语言教程构建ControlTemplate控件模板

    Xamarin XAML语言教程构建ControlTemplate控件模板 控件模板ControlTemplate ControlTemplate是从Xamarin.Forms 2.1.0开始被引入的 ...

  5. 淘晶驰串口屏入门(七)数据记录控件、文件浏览器控件、文件流控件

    一.数据记录控件 1.注意data+数字开头的为数据记录控件 2.只有x3和x5系列的串口屏支持数据记录控件,k0,t0和t1系列不支持 3.使用data0.insert方法向数据记录控件添加记录 4 ...

  6. php根据时间搜索的控件,yii2 crud生成的搜索中 自定义按 时间 搜索

    第一步 用gii生成crud 注意填充Search Model Class这一项 可以放在单独的文件夹 例如app\models\search\PostSearch 第二步 再生成的views里面的i ...

  7. WINCC如何利用报警记录控件实现操作员操作记录功能(上)

    本次内容也是我们工程师经常会忽略掉的,要不是有的甲方专门有这样的要求,都很难遇到这类的项目, 提出这种要求的大部分都是涉及到计算机验证和各种审计要求会提出此项内容,如GMP/FDA/BRC等等. 一旦 ...

  8. Syncfusion教程:在Xamarin.Forms中创建数据输入表单 (3)

    2019独角兽企业重金招聘Python工程师标准>>> 下载Essential Studio for Xamarin最新版本 Essential Studio for Xamarin ...

  9. Xamarin.Forms 简介

    An Introduction to Xamarin.Forms 来源:http://developer.xamarin.com/guides/cross-platform/xamarin-forms ...

  10. 搞懂Xamarin.Forms布局,看这篇应该就够了吧

    Xamarin.Forms 布局介绍 什么是布局?可以简单的理解为,我们通过将布局元素有效的组织起来,让屏幕变成我们想要的样子! 我们通过画图的方式来描述一下Xamarin.Forms的布局. 小节锚 ...

最新文章

  1. 支持向量机(SVM)
  2. c++程序影像读取_应急响应手册程序执行痕迹
  3. 用jk触发器构成二分频电路_实例分析,轻松掌握声控照明电路
  4. 返回空的List集合
  5. Python入门100题 | 第066题
  6. 聊聊高并发(二十一)解析java.util.concurrent各个组件(三) 深入理解AQS(一)
  7. 阅读react-redux源码(六) - selectorFactory处理store更新
  8. Win7下安装配置gVim
  9. PLSQL_性能优化系列10_Oracle Array数据组优化
  10. [GNU LD系列 3.1]一些基本的链接脚本概念
  11. 我的内核学习笔记9:Intel内部看门狗iTCO_wdt驱动
  12. promoter:启动子预测程序(PPPs)软件现状及分析
  13. qq音乐api android,QQ音乐
  14. 接口测试用例设计思路_学习接口测试,你需要知道这些!
  15. 即时通讯工具腾讯 QQ v9.1.9.26361 绿色便携版
  16. Centos 7 freeradius 搭建企业wifi认证服务
  17. 计算机系统结构 外文,计算机系统结构外文文献 计算机系统结构参考文献怎么写...
  18. 网站备案后一定要做的一件事【否则罚款5千元~1万元】
  19. 【Go语言实战】(4) 简简单单的几十行代码实现 TCP 通信
  20. 基于 FPGA 的飞机大战游戏系统设计

热门文章

  1. linux 查看是否有led设备,linux驱动开发--字符设备:通过cdd_cdev结构中的led变量区分是哪个节点,private_data使用...
  2. 桌面怎么新建html文件夹下,创建文件夹的步骤 怎么往新建的文件夹里写东西呀?...
  3. python爬虫百度文库_百度文库爬虫,Python爬取百度文库内容输出word文档low版
  4. php使用地图插件,wordpress的百度地图插件怎么使用
  5. Ubuntu -- 无法正常安装卸载ssh以及chattr无反应的问题
  6. Java_8排序(冒泡排序和选择排序)
  7. 这也许是你不曾留意过的 Mybatis 细节 1
  8. 多方位全面解析:如何正确地写好一个iOS UI
  9. 自制带ftp服务的linux
  10. Matlab图形窗口大小的控制 ,plot窗口大小,figure大小,axis设置