Xamarin android spinner的使用方法

小编 2026-07-02 阅读:1296 评论:0
<?xml version="1.0" encoding="utf-8"?><...

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="match_parent"              >  <Spinner            android:id="@+id/spin_status"            android:layout_width="300dp"            android:layout_height="50dp"            android:spinnerMode="dropdown"    /></LinearLayout>

xamarin  android spinner的如何使用呢,大多数web开发人员经常会听到DropDownList 和Combobox 这种下拉选择框,spinner 的意思差不多,有道词典一下意思是“下拉列表”、“台湾斯普”,“下拉列表组件”,“微调控件”。xamarin  android中我写几个简单的例子来掌握这个spinner的用法

spinner的相关属性:

  • android:dropDownHorizontalOffset:设置列表框的水平偏移距离
  • android:dropDownVerticalOffset:设置列表框的水平竖直距离
  • android:dropDownSelector:列表框被选中时的背景
  • android:dropDownWidth:设置下拉列表框的宽度
  • android:gravity:设置里面组件的对其方式
  • android:popupBackground:设置列表框的背景
  • android:prompt:设置对话框模式的列表框的提示信息(标题),只能够引用string.xml中的资源id,而不能直接写字符串
  • android:spinnerMode:列表框的模式,有两个可选值:dialog:对话框风格的窗口dropdown:下拉菜单风格的窗口(默认)
  • 可选属性:android:entries:使用数组资源设置下拉列表框的列表项目
1.一个最基本的用法,使用ArrayAdapter数据源,默认的SimpleSpinnerItem样式来绑定数据

看一下效果图:

Xamarin  android spinner的使用方法Xamarin  android spinner的使用方法

瞬间感觉丑爆了,的确如此,因为用的的android 默认的SimpleSpinnerItem样式。

布局页加一个Spinner的控件就ok了:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="match_parent"              >  <Spinner            android:id="@+id/spin_status"            android:layout_width="300dp"            android:layout_height="50dp"            android:spinnerMode="dropdown"    /></LinearLayout>

使用ArrayAdapter为spinner绑定数据

        protected override void OnCreate(Bundle bundle)        {            base.OnCreate(bundle);            // Set our view from the "main" layout resource            SetContentView(Resource.Layout.Main);            Spinner spinner1 = (Spinner)FindViewById(Resource.Id.spin_status);            string[] myWeb = new string[] {"闲蛋客","闲蛋客网赚","闲蛋客博客" };            ArrayAdapter  adapter = new ArrayAdapter(this,Android.Resource.Layout.SimpleSpinnerItem,myWeb);            spinner1.Adapter = adapter;        }
代码很少一个spinner最基本的用法就是这样,当然string[] 数据 ,也可以写Xml文件中,那就写一个体验一下吧

首先在布局文件中加上一个entries属性就ok了

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="match_parent"              >  <Spinner            android:id="@+id/spin_status"            android:layout_width="300dp"            android:layout_height="50dp"            android:spinnerMode="dialog"            android:entries="@array/myWeb"    /></LinearLayout>

写一个xml文件:

<?xml version="1.0" encoding="utf-8" ?><resources>  <string-array name="myWeb">    <item>闲蛋客</item>    <item>闲蛋客网赚</item>    <item>闲蛋客博客</item>  </string-array></resources>
Activity中就不要写绑定数据的代码了。

我们看一下结果是不是一样的,注意一下这个spinnerMode 显示的模式 值有两种 ,dialog ,dropdown (默认的是这个)
Xamarin  android spinner的使用方法
似乎效果比上一个SimpleSpinnerItem默认的样式要好一点,但终究两个都是默认很丑陋对不对。这个时候我们就要自己写一个布局吧。

使用自定义布局的方式绑定Spinner的数据源:

上面的array.xml文件已经写好了,就利用上面已经写好的吧。
接着我们就来写一个spin_item_xiandanke.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="match_parent">  <ImageView  android:id="@+id/img_icon"  android:layout_width="wrap_content"  android:layout_height="wrap_content"    />  <TextView    android:id="@+id/tv_web"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    /></LinearLayout>
数据适配器 MyAdapter.cs 比较普通一点的
using System;using System.Collections.Generic;using System.Linq;using System.Text;using Android.App;using Android.Content;using Android.OS;using Android.Runtime;using Android.Views;using Android.Widget;using Java.Lang;namespace SpinnerDemo.Resources.Adapter{    public class Xiandnake    {        public int Icon { get; set; }        public string Web { get; set; }        public Xiandnake(int icon ,string web)        {            this.Icon = icon;            this.Web = web;        }    }    public class MyAdapter:BaseAdapter    {        private List<Xiandnake> data;        private Context context;        public MyAdapter(Context context, List<Xiandnake> data)        {            this.context = context;            this.data = data;        }        public override int Count        {            get            {                return data.Count;            }        }        public override Java.Lang.Object GetItem(int position)        {            return null;        }        public override long GetItemId(int position)        {            return position;        }        public override View GetView(int position, View convertView, ViewGroup parent)        {            ViewHolder holder = null;            if (convertView == null)            {                convertView = LayoutInflater.From(context).Inflate(Resource.Layout.spinner_item_xiandanke, null);                holder = new ViewHolder();                holder.Img_icon = convertView.FindViewById<ImageView>(Resource.Id.img_icon);                holder.Tv_Web = convertView.FindViewById<TextView>(Resource.Id.tv_web);                convertView.Tag = holder;            }            else            {                holder = (ViewHolder)convertView.Tag;            }            holder.Tv_Web.Text = data[position].Web;            holder.Img_icon.SetImageResource(data[position].Icon);            return convertView;        }    }    public class ViewHolder:Java.Lang.Object    {        public ImageView Img_icon { get; set; }        public TextView Tv_Web { get; set; }    }   }

在activity中绑定数据,MainActivity.cs 

using System;using Android.App;using Android.Content;using Android.Runtime;using Android.Views;using Android.Widget;using Android.OS;using SpinnerDemo.Resources.Adapter;using System.Collections.Generic;namespace SpinnerDemo{    [Activity(Label = "SpinnerDemo", MainLauncher = true, Icon = "@drawable/icon")]    public class MainActivity : Activity    {        int count = 1;        protected override void OnCreate(Bundle bundle)        {            base.OnCreate(bundle);            SetContentView(Resource.Layout.Main);            List<Xiandnake> data = new List<Xiandnake>();            data.Add(new Xiandnake(Resource.Id.img_icon,"闲蛋客"));            data.Add(new Xiandnake(Resource.Id.img_icon, "闲蛋客博客"));            data.Add(new Xiandnake(Resource.Id.img_icon, "闲蛋客网赚"));            MyAdapter adapter = new MyAdapter(this,data);            Spinner spinner = (Spinner)FindViewById(Resource.Id.spinner_xiandanke);            spinner.SetSelection(2); //设置默认的选择项            spinner.Adapter = adapter;            spinner.ItemSelected += delegate            {                //int index = spinner.SelectedItemId;                int position = spinner.SelectedItemPosition;                Toast.MakeText(this, "你选择的是" + data[spinner.SelectedItemPosition].Web, ToastLength.Short).Show();            };        }    }}
例子写完,突然感觉毫无创新,这个MyAdapter 值得推敲,完全可以自己重新一个更好的。有愧了。下载的链接地址还是发一下:http://download.csdn.net/detail/kebi007/9675791

作者:张林

标题:Xamarin  android spinner的使用方法 原文地址:http://blog.csdn.net/kebi007/article/details/53055881

转载随意注明出处







版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

上一篇:Kendo UI使用笔记 下一篇:记录jrtplib编译
热门文章
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表