精华内容
下载资源
问答
  • 自定义spinner

    千次下载 热门讨论 2012-10-11 10:09:21
    自定义spinner的一个小列子 有缺陷
  • 自定义Spinner

    2017-12-20 15:08:50
    自定义spinner,解决Spinner,竟然不能默认不选中和修改默认显示内容
  • 自定义spinner样式

    2019-03-27 21:25:16
    自定义spinner样式,处理了点击事件的判断,有需要的可以参考下,
  • 自定义spinner源码,挺不错的 ,有动画哦
  • 自定义spinner下拉列表

    2016-08-16 20:32:55
    自定义spinner下拉列表
  • 主要为大家详细介绍了学习Android自定义Spinner适配器的相关资料,感兴趣的小伙伴们可以参考一下
  • 自定义 spinner

    2014-06-06 17:34:00
    http://blog.sina.com.cn/s/blog_3e333c4a010151cj.html 转载于:https://www.cnblogs.com/jiezzy/p/3773060.html

    http://blog.sina.com.cn/s/blog_3e333c4a010151cj.html

    转载于:https://www.cnblogs.com/jiezzy/p/3773060.html

    展开全文
  • Android自定义Spinner样式

    热门讨论 2014-10-15 17:27:45
    Android 自定义Spinner样式的 选择框背景,选择框文字属性,弹出框文字属性
  • xamarin android自定义spinner

    千次阅读 2017-07-14 21:38:01
    以前弄的一个下拉框时自带的spinner,感觉好丑,实际效果实在满足不了基本的UI界面要求,还是自己动手丰衣足食,看了网上关于android中自定义spinner的文章,感觉实现原理还是比较简单,所以这里用xamarin android来...

    以前弄的一个下拉框时自带的spinner,感觉好丑,实际效果实在满足不了基本的UI界面要求,还是自己动手丰衣足食,看了网上关于android中自定义spinner的文章,感觉实现原理还是比较简单,所以这里用xamarin android来实现自定义spinner样式。参考文章:http://blog.csdn.net/jdsjlzx/article/details/41316417

    实现原理
    1.TextView中显示选择的内容,右边显示上下的箭头,点击事件中设置不同的箭头
    2.TextView下显示的是一个PoputWindow,PoputWindow中显示的自定义ListView,在TextView单击事件中显示ListView就是下拉的选择项。
    先来看看最终的效果图
    这里写图片描述

    代码实现的过程主要分为以下几个部分:

    1. MainActivity布局实现(这个就是一个TextView)
    2. PoputWindow布局和ListView布局实现
    3. 自定类SpinerPopWindow继承PoputWIndow的实现,ListView适配器类的实现(实现的关键)
    4. MainActivity.cs中TextView事件监听、ListView的Item单击事件的监听实现

    1. MainActivity布局实现

    MainActivity中只有一个TextView

    <?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"
        android:paddingRight="20dp"
         android:background="@color/color_ffffff"
        android:paddingLeft="20dp">
        <TextView
            android:id="@+id/tv_value"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/color_dedede"
            android:drawableRight="@drawable/icon_down"
            android:padding="10dp"
            android:textColor="@color/content_color"
            android:textSize="20sp" />
    </LinearLayout>
    

    2.PoputWindow布局和ListView布局实现

    1.PoputWindow里面放的是一个ListView控件。spinner_window_layout.xml的background需要添加边框、设置背景颜色

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:orientation="vertical">
        <ListView
            android:id="@+id/listview"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:cacheColorHint="#00000000"
            android:background="@drawable/shape_popupwindow_list_bg"
            android:scrollbars="none" >
        </ListView>
    </LinearLayout>
    

    2.ListView布局文件spinner_item_layout里面只有一个TextView

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_vertical">
        <TextView
            android:id="@+id/tv_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:text="fdsfdsfdsf"
            android:textSize="20sp"/>
    </LinearLayout>
    

    3.自定类SpinerPopWindow继承PoputWIndow的实现,ListView适配器类的实现(实现的关键)

    spinnerPopWindow.cs需要继承PoputWindow,初始化ListView。ListView的Adapter类LVAdapter就不多说了。

    using System.Collections.Generic;
    using System.Linq;
    using Android.Content;
    using Android.Views;
    using Android.Widget;
    using Android.Graphics.Drawables;
    using static Android.Views.ViewGroup;
    namespace customSpinnerDemo
    {
        public  class SpinerPopWindow<T>:PopupWindow
        {
            private ListView listView;
            private List<T> list;
            private LVAdapter<T> adapter;
            private Context context;
            private LayoutInflater inflater;
            public SpinerPopWindow(Context _context ,List<T> _list, AdapterView.IOnItemClickListener itemClickListener)
            {
                context = _context;
                list = _list;
                inflater = LayoutInflater.From(_context);
                InitListView(itemClickListener);
            }
            private void InitListView(AdapterView.IOnItemClickListener itemClickListener)
            {
                View view = inflater.Inflate(Resource.Layout.spiner_window_layout, null);
                this.ContentView = view;
                //LayoutParams
                var parentView = (ViewGroup)view;
                var child  = parentView.GetChildAt(0);
                this.Width = LayoutParams.WrapContent;
                this.Height = LayoutParams.WrapContent;
                this.Focusable = true;
                ColorDrawable cdw = new ColorDrawable(Android.Graphics.Color.Transparent);
                SetBackgroundDrawable(cdw);
                //View childView = ContentView
                
                listView = view.FindViewById<ListView>(Resource.Id.listview);
                adapter = new customSpinnerDemo.LVAdapter<T>(context,list);
                listView.Adapter = adapter;
                listView.OnItemClickListener = itemClickListener;
            }
        }
        public class LVAdapter<T> : BaseAdapter
        {
            private List<T> list;
            private Context context;
            public LVAdapter(Context _context,List<T> _list)
            {
                context = _context;
                list = _list;
            }
            public override int Count
            {
                get{
                    return list.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)
                {
                    holder = new ViewHolder();
                    convertView = LayoutInflater.From(context).Inflate(Resource.Layout.spiner_item_layout,parent,false);
                    holder.tvName = convertView.FindViewById<TextView>(Resource.Id.tv_name);
                    convertView.Tag = holder;
                }
                else
                {
                    holder = (ViewHolder)convertView.Tag;
                }
                holder.tvName.Text = list[position].ToString();
                return convertView; 
            }
            private class ViewHolder:Java.Lang.Object {
                internal TextView tvName;
            }
        }
    }
    

    4.MainActivity.cs中TextView事件监听、ListView的Item单击事件的监听实现
    实现的原理就是一下代码了

    using Android.App;
    using Android.Widget;
    using Android.OS;
    using System.Collections.Generic;
    using static Android.Widget.AdapterView;
    using Android.Views;
    using Android.Graphics.Drawables;
    using Android.Support.V7.App;
    namespace customSpinnerDemo
    {
        [Activity(Label = "customSpinnerDemo", MainLauncher = true, Icon = "@drawable/icon",Theme = "@style/AppTheme")]
        public class MainActivity : AppCompatActivity, IOnItemClickListener, PopupWindow.IOnDismissListener
        {
            private List<string> list;
            private TextView tv_value;
            private SpinerPopWindow<string> SpinnerPopwindow;
            protected override void OnCreate(Bundle bundle)
            {
                base.OnCreate(bundle);
                SetContentView (Resource.Layout.Main);
                tv_value = FindViewById<TextView>(Resource.Id.tv_value);
                tv_value.Click += (s,e) =>
                {
                    SpinnerPopwindow.Width = tv_value.Width;
                    SpinnerPopwindow.ShowAsDropDown(tv_value);
                    SetTextImage(Resource.Drawable.icon_up);
                };
                list = new List<string>() { "科比","詹姆斯","韦德","波什"};
                SpinnerPopwindow = new SpinerPopWindow<string>(this,list,this);
                SpinnerPopwindow.SetOnDismissListener(this);
            }
            /// <summary>
            /// 给TextView右边设置图片
            /// </summary>
            private void SetTextImage(int resId)
            {
                //var drawable =GetDrawable(resId);
                Drawable drawable = Resources.GetDrawable(resId);
                drawable.SetBounds(0,0,drawable.MinimumWidth,drawable.MinimumHeight);
                tv_value.SetCompoundDrawables(null,null,drawable,null);
            }
            /// <summary>
            /// popupWindow 显示的ListView的item点击事件
            /// </summary>
            public void OnItemClick(AdapterView parent, View view, int position, long id)
            {
                SpinnerPopwindow.Dismiss();
                tv_value.Text=list[position].ToString();
                Toast.MakeText(this,"点击了:"+list[position],ToastLength.Long).Show();
            }
            /// <summary>
            /// popupWindow取消
            /// </summary>
            public void OnDismiss()
            {
                SetTextImage(Resource.Drawable.icon_down);
            }
        }
    }
    

    小结

    虽然实现原理比较简单,但是要把一个下拉框做的能够调用简单,代码多处复用,代码量小而简单,还是需要琢磨的。

    ,如果代码有什么看不懂的地方,直接看Github吧:https://github.com/MaChuZhang/Xamarin-Android-Custom-View
    作者:张林
    标题:xamarin android自定义spinner 原文地址:http://blog.csdn.net/kebi007/article/details/74856836
    转载随意注明出处

    在这里插入图片描述

    展开全文
  • Android自定义View-自定义Spinner 在使用系统Spinner时,往往总不能跟自己主题进行颜色搭配。这里介绍一下对Spinner的样式的修改,主要是对外观和颜色的修改。 效果图: Spinner背景图片: 1. 2. 效果图中...

    Android自定义View-自定义Spinner

    在使用系统Spinner时,往往总不能跟自己主题进行颜色搭配。这里介绍一下对Spinner的样式的修改,主要是对外观和颜色的修改。

    效果图:

    Spinner背景图片:

    1.

    2.

    效果图中选用的是2作为的背景。

    Activity中布局:在布局中定义一个Spinner控件

     <Spinner
            android:id="@+id/sp_Exception"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/spinner_bg"
            android:layout_gravity="center_horizontal"
            android:gravity="center"
            android:layout_marginTop="5dp"
            android:layout_marginBottom="5dp"
            android:paddingRight="15dp"
            android:paddingLeft="15dp" />

    spinner_layout布局:这里必须是CheckedTextView。

    <?xml version="1.0" encoding="utf-8"?>
    <CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:padding="5dp"
        android:textColor="@color/stategridcolor"
        android:textSize="18sp"
        tools:text="全部" />

    spinner_item布局:下拉列表布局,这里只展示一个textView。

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/white"
        android:padding="15dp" >
    
        <TextView
            android:id="@+id/spinner_item_label"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:textColor="@color/stategridcolor"
            android:text="全部"
            android:textSize="18sp" />
    
    </RelativeLayout>

    Activity中代码使用:

    ...
    ... 省略部分代码
    ...
    
    list = new ArrayList<String>();
    list.add("全部	" + allCount);
    list.add("采集异常	" + caiJiCount);
    list.add("计量异常	" + jiLiangCount);
    list.add("配电异常	" + peiDianCount);
    list.add("窃电异常	" + qieDianCount);
    
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),R.layout.spinner_layout, list) {
        @Override
        public View getDropDownView(int position, View convertView, ViewGroup parent) {
            View view = LayoutInflater.from(getActivity()).inflate(R.layout.spinner_item, parent, false);
    	TextView label = (TextView) view.findViewById(R.id.spinner_item_label);
    	label.setText(list.get(position));
    	return view;
        }
    };
    // 设置下拉列表的样式
    adapter.setDropDownViewResource(R.layout.item_spinner_daibanorder_down);
    sp_Exception.setAdapter(adapter);
    sp_Exception.setSelection(0);// 默认显示第一个item

     

     

    展开全文
  • 主要介绍了Android自定义Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)的相关资料,需要的朋友可以参考下
  • BetterSpinner自定义Spinner控件.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 966
精华内容 386
关键字:

自定义spinner