android autocompletetextview 自定义,AutoCompleteTextView 自定义提示样式
项目中用到AutoCompleteTextView 自动提示功能,如果用自带的ArrayAdapter就一种样式,非常丑,而且每一项提示文字过多的话不会自动换行。
所以自己自定义了一个适配器。
效果图:
1、每一项的布局文件:(可以自己定义)
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_marginLeft="@dimen/dimen_10"
android:layout_marginRight="@dimen/dimen_10"
android:layout_marginTop="@dimen/dimen_5"
android:layout_marginBottom="@dimen/dimen_5"
android:textSize="@dimen/textsize_14"
android:lineSpacingExtra="@dimen/dimen_4"
android:singleLine="false" />
android:layout_width="match_parent"
android:layout_height="@dimen/dimen_2"
android:background="@color/line_bg"
android:layout_marginLeft="@dimen/dimen_10"
android:layout_marginRight="@dimen/dimen_5"/>
这里用android:lineSpacingExtra="@dimen/dimen_4"属性指定了一下行间距。
2、适配器代码如下:
package nari.app.BianDianYingYong.adapter;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
import nari.app.BianDianYingYong.R;
/**
* Created by weihao on 2018/5/28.
* 继承BaseAdapter,实现Filterable
*/
public class AutoEditTextAdapter extends BaseAdapter implements Filterable {
private ArrayFilter mFilter;
private List mList;
private Context context;
private ArrayList mUnfilteredData;
public AutoEditTextAdapter(List mList, Context context) {
this.mList = mList;
this.context = context;
}
@Override
public int getCount() {
return mList==null ? :mList.size();
}
@Override
public Object getItem(int position) {
return mList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
ViewHolder holder;
if(convertView==null){
view = View.inflate(context, R.layout.autotext_list_item, null);
holder = new ViewHolder();
holder.text1 = (TextView) view.findViewById(R.id.text1);
view.setTag(holder);
}else{
view = convertView;
holder = (ViewHolder) view.getTag();
}
String pc = mList.get(position);
holder.text1.setText("-- "+pc);
return view;
}
static class ViewHolder{
public TextView text1;
}
@Override
public Filter getFilter() {
if (mFilter == null) {
mFilter = new ArrayFilter();
}
return mFilter;
}
private class ArrayFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence prefix) {
FilterResults results = new FilterResults();
if (mUnfilteredData == null) {
mUnfilteredData = new ArrayList(mList);
}
if (prefix == null || prefix.length() == ) {
ArrayList list = mUnfilteredData;
results.values = list;
results.count = list.size();
} else {
String prefixString = prefix.toString().toLowerCase();
ArrayList unfilteredValues = mUnfilteredData;
int count = unfilteredValues.size();
ArrayList newValues = new ArrayList(count);
for (int i = ; i < count; i++) {
String pc = unfilteredValues.get(i);
if (pc != null) {
if(pc!=null && pc.startsWith(prefixString)){
newValues.add(pc);
}else if(pc!=null && pc.startsWith(prefixString)){
newValues.add(pc);
}
}
}
results.values = newValues;
results.count = newValues.size();
}
return results;
}
@Override
protected void publishResults(CharSequence constraint,
FilterResults results) {
mList = (List) results.values;
if (results.count > ) {
notifyDataSetChanged();
} else {
notifyDataSetInvalidated();
}
}
}
}
3、调用:
//获取控件实例
AutoCompleteTextView et_wtms = (AutoCompleteTextView) layout.findViewById(R.id.et_wtms);
//设置输入一个字就自动提示,默认是两个
et_wtms.setThreshold();
AutoEditTextAdapter adapter = new AutoEditTextAdapter(key, context);
et_wtms.setAdapter(adapter);
et_wtms.addTextChangedListener(new TextWatcher() {//文字改变事件
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
//点击就自动提示
et_wtms.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
et_wtms.showDropDown();
}
});
Siteserver-stl:searchOutput(搜索结果)自定义显示样式
stl:searchOutput 自定义显示样式 自定义搜索提交表单需要在中嵌入显示搜索结果的标签,必须包含的标签 有
VaildForm 自定义提示消息
ValidForm插件提供了7种提示效果,其中有四种自定义效果,具体访问地址:http://validform.rjboy.cn/demo.html 个人偏爱其中两种,即 l 提示效果四:[自定义提示 ...
在ASP.NET中引用自定义提示框
在html网页中自定义提示框 正文: 在一般的B/S架构中项目,与用户的交互信息是非常重要的.在一般的情况下,设计人员都在把用户信息呈现在html中,用div和span去弹出相关信息.对于一般的情况而 ...
Android设置选项开发及自定义Preference样式
一个完整的Android应用程序都应该提供选项(或者叫偏好设置等等)让用户对APP的表现形式能够进行设置,比如说是否加入用户体验计划,或者是否自动升级.定时提醒.开启自启动.后台运行等等.提供一个好的 ...
vue2.0 自定义 提示框(Toast)组件
1.自定义 提示框 组件 src / components / Toast / index.js /** * 自定义 提示框( Toast )组件 */ var Toast = {}; var sho ...
vue 自定义 提示框(Toast)组件
1.自定义 提示框 组件 src / components / Toast / index.js /** * 自定义 提示框( Toast )组件 */ var Toast = {}; var sho ...
超酷HTML5 Canvas图表应用Chart.js自定义提示折线图
超酷HTML5 Canvas图表应用Chart.js自定义提示折线图 效果预览 实例代码
jQuery自定义滚动条样式插件mCustomScrollbar
如果你构建一个很有特色和创意的网页,那么肯定希望定义网页中的滚动条样式,这方面的 jQuery 插件比较不错的,有两个:jScrollPane 和 mCustomScrollbar. 关于 jScro ...
自定义plain 样式的 tableview,模拟器上不显示分割线,真机上却显示分割线.
一, 经历 1> 自定义plain 样式的 tableview,模拟器上不显示分割线,真机上却显示cell 下面的分割线. 2> 尝试使用表格的separatorStyle属性,尝试失败. ...
随机推荐
OpenStack 企业私有云的若干需求(3):多租户和租户间隔离(multi-tenancy and isolation)
本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...
Masonry自动布局
介绍,入门: http://www.cocoachina.com/ios/20141219/10702.html 下载: http://code.cocoachina.com/detail/30114 ...
ThinkPHP3.1新特性:Action参数绑定
Action参数绑定功能提供了URL变量和操作方法的参数绑定支持,这一功能可以使得你的操作方法定义和参数获取更加清晰,也便于跨模块调用操作方法了.这一新特性对以往的操作方法使用没有任何影响,你也可以用 ...
android高仿微信拍照、多选、预览、删除(去除相片)相冊功能
先声明授人与鱼不如授人与渔,仅仅能提供一个思路,当然须要源代码的同学能够私下有偿问我要源代码:QQ:508181017 工作了将近三年时间了,一直没正儿八经的研究系统自带的相冊和拍照,这回来个高仿微信 ...
【一】仿微信飞机大战cocos2d-x3.0rc1
參考 [偶尔e网事] 的 [cocos2d-x入门实战]微信飞机大战 cocos2dx 2.0版本号,偶尔e网事他写的很具体,面面俱到,大家很有必要看下.能够通过以下链接跳转: cocos2d-x入 ...
如果一个Object对象可能是集合或者数组那么如何对其进行迭代
需求:一个方法传入的参数是Object类型(假设对象为“items”,使用Object类型也是为了使用多态而增加方法复用性),但已知这个Object对象可能是集合,包括Collection和Map,也 ...
LintCode题解之判断是否为平方数之和
简单粗暴 public class Solution { /* * @param : the given number * @return: whether whether there're two ...
Codeforces 799 D. Field expansion
题目链接:http://codeforces.com/contest/799/problem/D 因为${a_i>=2}$那么一个数字至多操作${log_{2}^{max(a,b)/min(h, ...
新的blog站地址
自己用Jekyll搭建了一个静态blog网站 以后的blog随笔就更新在:https:/blog.hudunsec.cn
Go语言判断if else语句
基本格式: if 条件语句{ 执行语句 }else{ 执行语句 } package main import "fmt" func main(){ fmt.Println(Add(- ...
android autocompletetextview 自定义,AutoCompleteTextView 自定义提示样式相关推荐
- 帆软V10.0爬坑之路(如何修改自定义图表块提示样式以及标签样式)
如何修改自定义图表块提示样式以及标签样式 在标签和提示内容的地方选择自定义(其他可通过HTML代码编写的地方同理);可直接在其中填写HTML代码,来进行样式控制,以及背景图片等自定义(需勾选HTML解 ...
- 【Android UI设计与开发】第13期:顶部标题栏(四)自定义ActionBar风格和样式
转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/9087941 这篇文章将对ActionBar专题前面几篇学习过的内容做一个 ...
- android 自定义控件 焦点,Android 自定义Button按钮显示样式(正常、按下、获取焦点)...
现在的用户对APP的外观看得很重要,如果APP内所有元件都用Android默认样式写,估计下面评论里就有一堆在骂UI丑的.今天学习自定义Button按钮样式.Button样式修改的是Button的背景 ...
- Android 验证码和密码输入框,能自定义输入框个数和样式(连体,下划线和方形框) 类似微信支付宝的密码输入框等
MNPasswordEditText 项目地址:maning0303/MNPasswordEditText 简介: Android 验证码和密码输入框,能自定义输入框个数和样式(连体,下划线和方形框 ...
- Android怎么自定义充电铃声,安卓手机怎么自定义充电提示音_自定义安卓充电提示音教程_3DM手游...
安卓手机其实也是可以设置充电提示音的,我们只需要下载一个第三方软件,然后在APP中进行一些简单的设置,就可以实现自定义更换手机充电提示音了.安卓手机怎么自定义充电提示音?下面小编就为大家带来了详细的教 ...
- android弹出框自定义按钮,安卓(kotlin)自定义弹出框
在安卓开发中,我们经常会遇到这种情况,就是可爱的UI们设计了一套属于我们自己风格的弹出框,为了彰显我们自己的风格,使用自动的dialog当然满足不了我们的需求,所以还是得这基础上写出我们自己的提示框, ...
- 顶部标题栏(四)自定义ActionBar风格和样式
这篇文章将对ActionBar专题前面几篇学习过的内容做一个总结,顺便运用以前学过的知识实现一个自定义样式的ActionBar标题栏效果.话不多说,进入今天的正题. 一.实现效果图 竖屏效果图:最左边 ...
- Android中RatingBar的自定义效果
Android中RatingBar的自定义效果 有时候android系统提供给我们的ratingbar效果并不达到我们的要求,这个时候就可以自定义自己喜欢的ratingbar. 从上面的效果可以看出, ...
- android 自定义表单,Android实现Ant Design 自定义表单组件
Ant Design 组件提供了Input,InputNumber,Radio,Select,uplod等表单组件,但实际开发中这是不能满足需求,同时我们希望可以继续使用Form提供的验证和提示等方法 ...
最新文章
- 熬夜精心整理的一线大厂大数据、人工智能全套教程下载(含视频+源码)!!...
- LIST 和 MAP
- 零基础python入门课程-零基础 Python 入门
- java:socket通信
- anaconda安装的TensorFlow版本没有model这个模块
- jsf集成spring_Spring和JSF集成:转换器
- 搜索回溯——N皇后(hdu2553)
- Exchange2003-2010迁移系列之十一,Exchange2010 OWA配置
- js对象赋值只保留存在的属性_js对象的创建对象模式和继承模式(上)---构建对象模式...
- 自己的父母,能把钱交给他们存吗?
- 小米为什么拆分红米? | 畅言
- 20165205 2017-2018-2 《Java程序设计》第六周学习总结
- 计算机多媒体基础应用,《计算机应用基础》典型多媒体课件简介
- HAL库控制PS2手柄
- Android天气预报详解
- 用什么擦地最干净脑筋急转弯_100个脑筋急转弯,很多人困在了第8题,赶快考考孩子吧...
- 图扑软件数字孪生油气管道站,搭建油气运输管控平台
- cad页面布局快捷键_CAD页面设置管理器快捷键命令(如何设置页面布局)
- 文件上传/JS/MIME/黑名单/白名单/htaccess/00截断详解篇[代码审计]
- 图像自动裁剪和角度矫正
热门文章
- P5470 [NOI2019] 序列
- 电脑神器- Snipaste(截图神器)+Ditto(剪贴板)推荐篇
- 疫情时期的程序员爱情,看完我酸了!
- 【十九届浙大城市学院程序设计竞赛 - 周训】
- linux系统oracle监听器报错,ORACLE监听器 The listener supports no services 问题解决方法...
- 如何查看远程计算机端口是否,怎么检查win7电脑3389端口是否被开启
- 【深度学习】论网络深度的利弊
- Delphi中MDI窗体调用MDI子窗体Delphi中MDI窗体调用MDI子窗体,怎么调用
- 网络地址转换(NAT)(二)
- nat配置(网络地址转换)