下拉列表ListPopupWindow
来源:互联网 发布:编程模拟蚂蚁寻找甜品 编辑:程序博客网 时间:2024/05/06 19:32
1、查看源码,会发现PopupMenu和Spinner内部都是使用ListPopupWindow实现下拉列表效果,所以ListPopupWindow是基础。
2、PopMenu的列表页面无法定制UI,只能显示光秃秃的文字;而ListPopupWindow和Spinner可以通过适配器来设置每项的布局风格,当然ListPopupWindow是最灵活的,不但可在左侧显示列表,还能在右侧显示列表。
3、PopMenu可通过子菜单实现多级菜单效果,而ListPopupWindow和Spinner只有一级列表。
4、ListPopupWindow和Spinner可以设置默认选中项,而PopMenu没有默认选中项。
5、Spinner既可以下拉列表来展示,也可以对话框来展示;而PopupMenu和ListPopupWindow只能以下拉列表展示。
从上面可以看出ListPopupWindow的自主性更强一点,所以作者记录一下ListPopupWindow的基本使用:
import android.os.Build;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.ListPopupWindow;import android.view.Gravity;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity implements View.OnClickListener,AdapterView.OnItemClickListener{ private EditText et_input; private Button button; private ListPopupWindow listPopup; private ListPopupAdapter adapter; private List<String> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); list=new ArrayList<>(); for(int i=0;i<10;i++){ list.add(i+""); } initView(); } private void initView() { et_input= (EditText) findViewById(R.id.et_input); button= (Button) findViewById(R.id.button); et_input.setOnClickListener(this); button.setOnClickListener(this); listPopup=new ListPopupWindow(this); adapter=new ListPopupAdapter(this,list); listPopup.setAdapter(adapter); listPopup.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT); listPopup.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT); listPopup.setModal(true); listPopup.setOnItemClickListener(this); }// setModal : 设置显示模式。通常设置为true。// setWidth : 设置下拉列表窗口的宽度。// setHeight : 设置下拉列表窗口的高度。// setAnchorView : 设置下拉列表的参照控件。下拉列表在显示时将展现在参照控件的下方,注意:如果不设置参照控件就直接调用show函数,系统不知道要把下拉列表在何处展示,只能是异常退出了。// setDropDownGravity : 设置下拉列表的对齐方式。Gravity.START表示与参照控件左侧对齐,Gravity.END表示与参照控件右侧对齐。注意:该函数只在4.4.2及以上版本中使用。// setOnItemClickListener : 设置列表项的点击监听器。// show : 显示下拉列表窗口。// dismiss : 关闭下拉列表窗口。// setOnDismissListener : 设置下拉列表的关闭监听器。 @Override public void onClick(View v) { switch (v.getId()){ case R.id.et_input: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { listPopup.setDropDownGravity(Gravity.END); } listPopup.setAnchorView(v); listPopup.show(); break; case R.id.button: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { listPopup.setDropDownGravity(Gravity.START); } listPopup.setAnchorView(v); listPopup.show(); break; } } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(this, position+"", Toast.LENGTH_SHORT).show(); if(listPopup!=null){ listPopup.dismiss(); } }}
效果图如下:
奉上csdn下载地址:http://download.csdn.net/detail/android_zhengyongbo/9842450
0 0
- 下拉列表ListPopupWindow
- EditText+ListPopupWindow实现可编辑的下拉列表
- ListPopupWindow
- 下拉列表
- 下拉列表
- 下拉列表
- 下拉列表
- 下拉列表
- 下拉列表
- 下拉列表
- 下拉列表
- 下拉列表
- 下拉列表
- 下拉列表
- 下拉列表
- ListPopupWindow,PopupMenu
- ListPopupWindow用法
- Android开发笔记(一百二十一)列表弹窗PopupMenu和ListPopupWindow
- C:关键字,你到C++里就变了
- 动态规划的思想
- 基于Web端的H5有什么优势?
- PyQt4对话框(dialog类型介绍)
- rex 传参
- 下拉列表ListPopupWindow
- Java多线程系列--“JUC锁”02之 互斥锁ReentrantLock (r)
- bzoj 2095: [Poi2010]Bridges 二分答案+网络流
- 斜线/、反斜线\、双斜线//、双反斜线\\ ,区别
- 堆及其应用
- 数据流图常见错误分析
- url解码
- eclipse新建maven工程
- java中native的用法