android editext下拉框,android实现下拉框和输入框结合
1、如何实现:将一个EditText和ListView+PopupWindow 结合起来。自定义一个EditText,在自定义控件中用PopupWindow实现弹出ListView,已达到想要的效果。
2、需要的布局: 1、EditText+ImageButton 的布局
2、ListView的布局
3、代码
EditText+ImageButton 的布局:
ListView的布局 :
自定义控件java代码:
package com.wxcoming.wxcomingerp.custom.sptoedit;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.ColorDrawable;
import android.support.annotation.AttrRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.PopupWindow;
import com.wxcoming.wxcomingerp.R;
/**
* Created by adolph_jun on 2017/10/13.
*/
public class CDropEditText extends FrameLayout implements View.OnClickListener, AdapterView.OnItemClickListener {
private EditText mEt;
private ImageButton mIb;
private ListView mLv;
private Context context;
private PopupWindow popWindow;
public CDropEditText(Context context) {
super(context);
this.context = context;
}
public CDropEditText(Context context,AttributeSet attrs) {
super(context, attrs);
//放在三个属性的构造方法处会报错
LayoutInflater.from(context).inflate(R.layout.custome_dropedittext, this);
mEt = (EditText) findViewById(R.id.CD_Et_account);
mIb = (ImageButton) findViewById(R.id.CD_Iv_drop_image);
initPopWindow(mIb);
}
public CDropEditText( Context context, AttributeSet attrs,int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
mIb.setOnClickListener(this);
mLv.setOnItemClickListener(this);
}
/**
* 编辑内容改变监听
* @param textWatcher
*/
public void setEditChange(TextWatcher textWatcher){
if(textWatcher!=null){
mEt.addTextChangedListener(textWatcher);
}
}
/**
* 给list添加数据
* @param adapter
*/
public void setAdapter(BaseAdapter adapter){
//popWindow.showAsDropDown(this, 0, 5);
mLv.setAdapter(adapter);
}
private void initPopWindow(View v) {
View view = LayoutInflater.from(getContext()).inflate(R.layout.pop_view, null, false);
mLv = (ListView) view.findViewById(R.id.CD_pop);
popWindow= new PopupWindow(view, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);
popWindow.setTouchable(true);
popWindow.setTouchInterceptor(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
}
});
popWindow.setBackgroundDrawable(new ColorDrawable(0x00000000)); //要为popWindow设置一个背景才有效
}
public void showPop(){//弹出listview
popWindow.showAsDropDown(this, 0, 5);
}
@Override//下拉图标按钮监听
public void onClick(View v) {
if(v.getId() == R.id.CD_Iv_drop_image) {
if(popWindow.isShowing()) {
popWindow.dismiss();
return;
}
popWindow.showAsDropDown(this, 0, 5);
}
}
@Override//listview中item的点击事件监听
public void onItemClick(AdapterView> parent, View view, int position, long id) {
mEt.setText(mLv.getAdapter().getItem(position).toString());
popWindow.dismiss();
}
}
android editext下拉框,android实现下拉框和输入框结合相关推荐
- Android中自定义xml文件给Spinner下拉框赋值并获取下拉选中的值
场景 实现效果如下 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 将布局改 ...
- 【Android】带可输入功能的下拉框EditSpinner,附带Filter功能
功能实现,分为前期准备+使用. 1.前期准备 在model下建立一个spinner包文件夹,在这个文件夹中添加4个java文件: 1.BaseEditSpinnerAdapter.java impor ...
- Android实现仿QQ登录可编辑下拉菜单
在Android里,直接提供的Spinner控件虽然可以实现下拉菜单的效果,但其效果并不理想,很多时候我们需要类似手机QQ那样既可以在文本框中直接输入编辑文字,可以在下拉菜单中选中或者删除菜单选项,并 ...
- Android实现仿QQ登录可编辑下拉菜单
Android实现仿QQ登录可编辑下拉菜单 在Android里,直接提供的Spinner控件虽然可以实现下拉菜单的效果,但其效果并不理想,很多时候我们需要类似手机QQ那样既可以在文本框中直接输入编辑文 ...
- android 实现仿QQ登录可编辑下拉菜单
今天,简单讲讲android里如何实现向QQ一样的登录后记住用户名的下拉框. 这个其实也很简单,网上搜索了一下,很多相关的资料,基本都是PopupWindow+ListView的方式,实现起来比较灵活 ...
- android studio 下拉菜单,怎么在android studio中使用Spinner实现一个下拉菜单
怎么在android studio中使用Spinner实现一个下拉菜单 发布时间:2021-03-23 14:56:15 来源:亿速云 阅读:92 作者:Leah 这期内容当中小编将会给大家带来有关怎 ...
- Android自定义控制(五)仿新浪微博的下拉刷新
网上有很多很有名的开源框架,这里就来拉拉PullToRefresh这个框架,也就是我们平时用的下拉刷新啦,当然你问我这个有什么用啊?别人已经写好了,这里主要是学习以及练习,练习的次数多了,一切就顺其自 ...
- Android新控件RecyclerView浅析及上拉和下拉刷新
概述: RecyclerView是android-support-v7-21版本中新增的一个Widgets,RecyclerView是ListView的升级版本,更加先进和灵活.在以后的开发中我们就可 ...
- Android m 自定义下拉菜单,Android实现动画效果的自定义下拉菜单功能
我们在购物APP里面设置收货地址时,都会有让我们选择省份及城市的下拉菜单项.今天我将使用Android原生的 Spinner 控件来实现一个自定义的下拉菜单功能,并配上一个透明渐变动画效果. 要实现的 ...
最新文章
- [转]笑话: 耐力惊人的三只乌龟
- seaborn系列 (15) | 双变量关系图jointplot()
- opencv 最大内接矩形笔记
- Windows 7 部署 Android 开发环境傻瓜式教程(Eclipse+ADT)
- python编码转换语句_好程序员Python教程之字符串编码知识小结
- CASE_02 基于FPGA的数字钟万年历
- 【渝粤题库】国家开放大学2021春3894理工英语1题目
- Java中接口的多继承
- 免费SSL证书(支持1.0、1.1、1.2)
- java instant获取微秒转成日期格式_Java8新特性时间日期库DateTime API及示例
- springboot集成logback配置文件模板
- GlusterFS 部署和应用
- Third《高质量程序设计指南—C++/C语言》(第二版)
- 锐捷校园网使用python登录
- sja1000 CAN控制器波特率计算方法详解
- WinCC vbs脚本小结
- 诺诺开放平台(电子发票、智能编码、发票查验接口调用)
- 自走棋突然显示服务器无法定位,刀塔自走棋服务器无法定位游戏会话_刀塔自走棋服务器无法定位游戏会话怎么回事_玩游戏网...
- 【视频学习】宋维钢词霸天下38000词汇速记 万法归宗之英语语法速成全集
- [Poi 2012] bzoj2794 Cloakroom [dp]
热门文章
- CYGWIN 安装教程
- 【深度学习】使用深度学习检测混凝土结构中的表面裂缝
- 在 OneNote 2010中输入复杂的数学公式
- 零伽壹链改深度解析|区块链技术应用于电子发票管理
- E3-1231-V3 搭配华硕B85 -A R2.0 主板锁定全核心3.8GHZ以及M.2 NVME 固态硬盘作为系统盘bios
- 如何将多个excel表格合并成一个_如何将多个PDF的首页整合成一个单独的PDF
- matlab 生成mat文件
- Python基础入门知识
- CTFshow_web入门_信息收集(web1-20)
- 深入浅出最优化(2) 步长的计算方法