自定义Android的Spinner

Android自定义spinner 重温Android自定义控件,选择自定义一个类spinner,别眨眼: 先来看看效果 一:首先是自定义属性 1.在res/values下创建一个attrs.xml文件,在里面定义属性 2.文件如下:     CustomSpinner">                                                        阅读详情

刚接触Android平台编程不久,被烂教材整得头晕。

有一个关于Spinner扩展的问题,问题是,怎么把弹出来的菜单自定义。当然,书上是没有告诉你的,它们压根就不知道那个和ArrayAdapter相关的两个layout关联到底是什么回事说清楚,就这么列了个代码就算了。我很头晕,于是,写代码,验证自己的推测,搞了好久才“哦”一声解决了自己的疑问。

而自定义Spinner则是和这两个layout有关,ArrayAdapter中初始化的那个layout,是用来渲染spinner被选择的item的样式,而setDropDownResource这个layout,则是弹出框时用的item样式。也就是说,这个spinner使用了两个列表,只不过第一个列表只是显示了一行而已。

下面列个代码,大家仔细看就明白了(因为中午没睡,现在太困了,没精力写为什么了,估计大家能看得懂)。

01 <?xml version="1.0" encoding="utf-8"?>
02  
03 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
04               android:layout_width="fill_parent"
05               android:layout_height="fill_parent"
06               android:padding="10dip">
07  
08     <ImageView android:id="@+id/icon"
09                android:src="@drawable/tick"
10                android:layout_marginRight="10dip"
11                android:layout_width="wrap_content"
12                android:layout_height="wrap_content"
13                android:visibility="invisible"/>
14  
15     <TextView android:id="@+id/label"
16               android:layout_width="wrap_content"
17               android:layout_height="wrap_content"
18               android:layout_toRightOf="@id/icon"
19               android:textColor="#000000"
20               android:textSize="22dip"/>
21 </LinearLayout>

01 public class CustomSpinnerActivity extends Activity {
02     public Spinner spinner;
03  
04     public void onCreate(Bundle savedInstanceState) {
05         super.onCreate(savedInstanceState);
06         setContentView(R.layout.ch07_custom_spinner);
07  
08         Resources res = getResources();
09         CharSequence[] platforms = res.getTextArray(R.array.platforms);
10  
11         spinner = (Spinner) findViewById(R.id.target);
12  
13         ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item, platforms) {
14             @Override
15             public View getDropDownView(int position, View convertView, ViewGroup parent) {
16                 View view = getLayoutInflater().inflate(R.layout.ch07_custom_spinner_item, parent, false);
17  
18                 TextView label = (TextView) view.findViewById(R.id.label);
19                 label.setText(getItem(position));
20  
21                 if (spinner.getSelectedItemPosition() == position) {
22                     label.setTextColor(getResources().getColor(R.color.selected_fg));
23                     view.setBackgroundColor(getResources().getColor(R.color.selected_bg));
24                     view.findViewById(R.id.icon).setVisibility(View.VISIBLE);
25                 }
26  
27                 return view;
28             }
29         };
30         spinner.setAdapter(adapter);
31     }
32  
33 }

效果图

安卓自定义下拉框---Spinner的实现 最近项目中用到下拉列表,刚开始一头雾水,后来在网上找了一个Demo,自己改了一下,现在把它分享出来,给大家参考,写的不好,多多关照!不过功能还是实现的了······先上图给大家看看效果! 效果图: 实现思路: 1.定义下拉控件布局(ListView及子控件布局) 2.自定义SpinerPopWindow类 3.定义填充数据的Adapter 阅读详情

相关推荐

Android自定义Spinner的实践指南

选项1</item><item>选项2</item><item>选项3

weixin_35916518的博客 1103

下拉选择框spinner:获取选中值的几种方法

spinner绑定的值一般分3种形式存放:     1、存放在java页面的数组中:{"湖北","武汉","荆州"}     2、存放在strings.xml文件中     1、2是在一般的页面中比较常用,个人推荐第2种。这样你的页面看起来不会很乱,而且一般把值存放在xml中,看起来比较专业,呵呵。比如values文件夹中的:arrays.xml、colors.xml、ids.xml、str

u010078640的专栏 4万+

Android Spinner组件的自定义实现与应用

自定义Adapter类为开发者提供了更大的灵活性,以满足特定场景下对Spinner组件显示内容的控制需求。在这一章节中,我们将深入探讨自定义Adapter类的创建过程、实现步骤以及视图定制的高级应用。在某些复杂的UI交互中,标准的Adapter类可能无法满足开发需求,这时就需要我们创建一个自定义的Adapter类。自定义Adapter可以应用于多种场景,例如:当Spinner需要显示复杂的列表项,每个项包含图标和文本时;当需要根据数据动态改变列表项的样式时,比如背景颜色或文本样式;

weixin_42466723的博客 1142

在下拉列表Spinner中添加自定义文字和图标的方法。

有关于在下拉列表Spinner中添加自定义文字和图标的方法,这里以人的姓名和头像,地址为例,当然只要作出修改就可以把适配器应用于ListView 显示。

CCC_122的博客 7713

LAN8720芯片硬件设计避坑指南:从晶振选择到PHY地址配置的5个关键细节

本文深入解析LAN8720以太网PHY芯片硬件设计的五个关键细节,涵盖晶振模式选择、PHY地址配置、复位电路设计、电源滤波与接口布线。重点阐述了REF_CLK Out与REF_CLK In两种时钟模式的配置逻辑与应用场景,提供了避免通信失败与信号完整性问题的实战方案,是嵌入式网络硬件开发的实用避坑指南。

i1j2k的博客 514

ACM算法模板 · 一些常用的算法模板-模板合集(打比赛专用)

萌新常用的都在这了,本萌新的模板集。

张天枭の博客 5万+

Android--自定义带点击事件监控的Spinner控件

Spinner是没有点击事件接口的,如果你用setOnClickListener(),程序将会发生运行时异常。一般情况下,无需监控Spinner的点击事件,因为默认的处理方式是点击Spinner出现列表对话框,而某些时候,我们是需要处理点击事件的,比如:我们想在点击Spinner时更新它的列表项,更新完毕之后才显示新的列表框。那么这种情况下用Spinner显然行不通,针对这种情况,我做了一个继承...

445822357 408

为什么你的SSE连接总断?深入对比EventSource与fetch-event-source的5大差异点

本文深入对比了原生EventSource与@microsoft/fetch-event-source库在SSE连接稳定性上的五大关键差异。重点剖析了后者在请求能力、连接控制、错误处理、数据解析及性能优化方面的优势,特别是其支持POST请求、自定义Header、精细化的重连策略与生命周期管理,为解决生产环境中SSE连接频繁断开的问题提供了专业方案。

weixin_28077113的博客 494

安卓中Spinner换图表样式

i.我们在按照UI画的图修改一些界面的时候,有的时候会涉及到Spinner换图标样式的这种情况。刚开始接触肯定是比较坑的,首先说的是Spinner的background如果直接替换图标的话,肯定不是你想要的样子。因为Spinner里面的backgroud的属性指的是它整个的背景。    》》》》》》这里面的向下箭头,都是spinner里面的》》》》》    教程来了。。。。。    首先我们

xiangzaixiansheng的博客 3145

ABAP代码检查(Code Review)

1、SLIN 扩展程序检查 也可通过(SE38工具栏->检查-扩展程序检查) 进入 2、ATC 检查 通过<SE38菜单栏-检查-ABAP测试主控室> 或事物代码SCI, 支持自定义检查变式 SCI可以配置检查变式满足特殊需求,配置对象集用于批量检查 3、通过ABAP测试主控室实现统一管理,定期检查作业和监控功能(事务代码ATC) 参考 SLIN...

u012232542的博客 6068

深入理解C语言内存管理:堆与栈的区别

栈是一种遵循后进先出(LIFO)原则的数据结构。在程序中,栈用于存储局部变量、函数的参数以及函数调用时的返回地址等信息。栈的内存管理由操作系统自动进行,每次函数调用时都会在栈上分配一块内存区域,函数执行完毕后,该内存区域会自动释放。在C语言中,堆与栈是两种不同的内存分配方式,各自有着不同的特点和适用场景。栈内存自动管理,访问速度快,但大小有限,适用于存储局部变量和函数调用信息。堆内存由程序员手动管理,适用于存储动态数据结构,大小不受限制,但访问速度较慢,容易导致内存泄漏等问题。

set_one的博客 1581

android 自定义spinner样式,【安卓】如何制作Spinner的Hint提示效果,并自定义Spinner样式...

这个需求其实还是有的,有时候我们想在Spinner中制作出一个类似于TextView的hint那样的效果。如下: 当你第一次看到这个Spinner的时候,其中显示“点击选择”,而你点了一下,就会出现选项,一旦点选了某个选项,“点击选择”就会从此消失,也就是说,那只是提示,不参与逻辑判断。也就是boni2k提供的solution,于是我复制过来做了一些自己的测试和理解如下:代码部分:// 布局文件 ...

weixin_35462903的博客 1090

泛微表单添加自定义按钮

泛微表单添加自定义按钮

技术分享 2191

【Android】自定义Spinner控件及其使用

Android自带Spinner控件如何使用以及如何进行样式自定义、监听选择事件等

boulete的博客 1万+

【表面缺陷检测】基于yolov5的钢轨表面缺陷检测(附代码和数据集,Windows系统)

【表面缺陷检测】基于yolov5的钢轨表面缺陷检测(附代码和数据集,Windows系统)

学无止境、积少成多、厚积薄发 3984

TC3XX - MCAL知识点(三十三):基于EB Tresos配置Tc3xx的MCAL代码如何产生中心对称的三相六路发波波形

本文用于记录如何在英飞凌 tc3xx 芯片的应用开发中,借助 EB Tresos 配置工具生成的配置代码与 MCAL 源码相结合,进而实现三相六路中心对称互补的 PWM 输出效果。外部资源需求:EB Tresos23.0以上、Tasking\Hightec编译器、示波器\逻辑分析仪。

梦想技术家 1212

【安卓】如何制作Spinner的Hint提示效果,并自定义Spinner样式

这个需求其实还是有的,有时候我们想在Spinner中制作出一个类似于TextView的hint那样的效果。 如下: 当你第一次看到这个Spinner的时候,其中显示“点击选择”,而你点了一下,就会出现选项,一旦点选了某个选项,“点击选择”就会从此消失,也就是说,那只是提示,不参与逻辑判断。 那么如何做到这种效果呢?我去stackoverflow上查了一下,发现http://s

邂逅黛玛姑娘 1万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

android spinner自定义样式,Android自定义Spinner【原创】

最近在做的项目中有很多下拉框,为了实现方便就用了Android 自带的Spinner,但是自带的Spinner的样式又不符合要求,就学习了一下自定义Spinner。下面是整个步骤:1.准备好图片2.style中定义@drawable/spinner5dip3.调用android:id="@+id/field_item_spinner_content"style="@style/spinner_st...

weixin_32804237的博客 1004

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

android spinner自定义,自定义Android的Spinner

刚接触Android平台编程不久,被烂教材整得头晕。有一个关于Spinner扩展的问题,问题是,怎么把弹出来的菜单自定义。当然,书上是没有告诉你的,它们压根就不知道那个和ArrayAdapter相关的两个layout关联到底是什么回事说清楚,就这么列了个代码就算了。我很头晕,于是,写代码,验证自己的推测,搞了好久才“哦”一声解决了自己的疑问。而自定义Spinner则是和这两个layout有关,Ar...

weixin_34515820的博客 594

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

android spinner 简书,一步一步自定义spinner

spinner就是下拉选择组件,系统自带的spinner使用起来非常方便,首先定义一个array(strings.xml),如下:一年级二年级三年级四年级五年级六年级代码如下:Spinner spinner = (Spinner) findViewById(R.id.spinner);ArrayAdapter adapter = ArrayAdapter.createFromResource(th...

weixin_27153203的博客 1376

Android 自定义Spinner

下拉控件再常见不过了,今天做一个类别的下拉菜单用到了自定义Spinner控件,再次记录一下, 首先是布局: <Spinner android:id="@+id/blog_spinner" android:layout_width="wrap_content" android:overlapAnchor="false" android:spinnerMode="drop

可乐的博客 1137

Android开发——自定义Spinner

在使用Spinner时,如果单纯的设置背景色,则下拉框的箭头会被覆盖,这并非想要的。通过上网查找资料,这篇文章的方法简单可行。 文章链接:https://www.jianshu.com/p/25121c36f753 附注:如果觉得背景色太深不好看,可以使用android:alpha=“0.7”(数字可修改,为0~1之间的小数)来设置透明度。 ...

qq_44937699的博客 1810

android: spinner及setDropDownViewResource的使用及自定义Spinner样式

Spinner下拉列表 一般使用非常简单。直接上代码 1.布局文件 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout...

a96167653219的博客 347

Android 实现自定义Spinner

有时候因为项目的界面风格 很多控件如果使用原生的样式感觉会与整体风格有些不搭 所以需要自定义样式 很多项目中自定义控件都是必不可少的 这里参考网上的一些资料 实现了一个自定义Spinner  记录下 加深印象 效果图:                          弹框是通过一个重写的Dialog和Listview实现       第一步   重写Dialog类Selec

七彩祥云至尊宝 6万+

Android:Spinner自定义、动态数据

1、布局定义 <Spinner android:id="@+id/spinner_view" android:layout_width="match_parent" android:layout_marginLeft="20dp" android:layout_height="match_parent" android:gravity="right...

weixin_39165470的博客 1264
上一篇: 浅谈android的选项卡TabHost
下一篇: 下拉框spinner:获取选中值的几种方法
Jymot
博客等级 码龄14年 6粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值