147.泡泡窗实现下拉菜单条
来源:互联网 发布:linux互斥锁 实现 编辑:程序博客网 时间:2024/05/01 16:25
功能描述:点击下拉按钮,显示出所有的条目,有删除和点击功能,点击后将条目显示。
注意:泡泡窗默认是没有焦点的。要让泡泡窗获取到焦点。假如listview的item中有Button,ImageButton,CheckBox等会强制获取焦点的view 此时,listview的item无法获取焦点,从而无法被点击 解决方法:给item的根布局增加以下属性 android:descendantFocusability="blocksDescendants"设置之后,Button获取焦点,item中其他控件也可以获取焦点,如果文本的文字过多,会被后面的图标盖住,首先设置单行android:singleLine="true"再设置右边距就盖不住android:padding="40dp"
需要添加下面三项
//让泡泡窗额度条目获取到焦点popupWindow.setFocusable(true);//设置背景图popupWindow.setBackgroundDrawable(new BitmapDrawable());popupWindow.setOutsideTouchable(true);
主布局文件activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#22000000" tools:context=".MainActivity" > <RelativeLayout android:layout_marginTop="40dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" > <EditText android:id="@+id/et" android:singleLine="true" android:padding="40dp" android:layout_width="300dp" android:layout_height="40dp" /> <ImageView android:layout_width="wrap_content" android:layout_height="40dp" android:id="@+id/iv_select" android:layout_centerVertical="true" android:background="@drawable/ic_launcher" android:layout_alignRight="@id/et" /></RelativeLayout></RelativeLayout>
每一个条目的布局文件item_list.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="5dp" android:orientation="horizontal" > <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:drawableLeft="@drawable/ic_launcher" android:gravity="center_vertical" android:drawablePadding="3dp" android:text="123" android:id="@+id/tv_number" android:layout_weight="1" /> <ImageView android:id="@+id/iv_delete" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/ic_launcher" /> </LinearLayout>
逻辑代码MainActivity.java
package com.ldw.select;import java.util.ArrayList;import android.app.Activity;import android.graphics.drawable.BitmapDrawable;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.BaseAdapter;import android.widget.EditText;import android.widget.ImageView;import android.widget.ListView;import android.widget.PopupWindow;import android.widget.TextView;public class MainActivity extends Activity implements OnClickListener{private ImageView iv_select;private EditText et;private ArrayList<String> list = new ArrayList<String>();private TextView tv_number;private ImageView iv_delete;private ListView listView;private PopupWindow popupWindow; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initView(); initListener(); initData(); }private void initView() {setContentView(R.layout.activity_main); iv_select = (ImageView) findViewById(R.id.iv_select); et = (EditText) findViewById(R.id.et);} private void initListener() { iv_select.setOnClickListener(this);} //集合中添加数据private void initData() {for(int i = 0; i< 20; i++){list.add(1340000000 + i + "");}initListView();}//初始化列表private void initListView(){listView = new ListView(this);//设置listView的背景图listView.setBackgroundResource(R.drawable.ic_launcher);//让listView的滚动条不可见listView.setVerticalScrollBarEnabled(false);MyAdapter adapter = new MyAdapter();listView.setAdapter(adapter);listView.setOnItemClickListener(new OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {et.setText(list.get(position));//关闭泡泡窗popupWindow.dismiss();}});}//泡泡窗实现点击显示列表,泡泡窗默认是不获取焦点的private void showNumberList(){if(popupWindow == null){//泡泡窗的填充,设置宽高popupWindow = new PopupWindow(listView, et.getWidth(), 300);}//让泡泡窗额度条目获取到焦点popupWindow.setFocusable(true);//设置背景图popupWindow.setBackgroundDrawable(new BitmapDrawable());popupWindow.setOutsideTouchable(true);//第一个参数是依附哪一个参数下,x轴,y轴的偏移量,相对于第一个参数的左下角的位置popupWindow.showAsDropDown(et, 0, 0);}@Overridepublic void onClick(View v){ switch (v.getId()){ case R.id.iv_select: //点击弹出列表 showNumberList(); break; } }//listView填充class MyAdapter extends BaseAdapter{@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int position) {return null;}@Overridepublic long getItemId(int position) {return 0;}@Overridepublic View getView(final int position, View convertView, ViewGroup parent) {final View view = View.inflate(MainActivity.this, R.layout.item_list, null);tv_number = (TextView) view.findViewById(R.id.tv_number);iv_delete = (ImageView) view.findViewById(R.id.iv_delete);tv_number.setText(list.get(position));//删除按键iv_delete.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {//删除条目list.remove(position);//更新页面notifyDataSetChanged();//根据当前条目的个数设置,当前条目的高度int listViewHeight = list.size() * view.getHeight();if(listViewHeight > 300){listViewHeight = 300;}else{listViewHeight = listViewHeight;}//更新泡泡窗的高度popupWindow.update(et.getWidth(), listViewHeight);//删除完了,泡泡窗小消失if(list.size() == 0){popupWindow.dismiss();//下拉条消失iv_select.setVisibility(View.GONE);}}});return view;}}}
0 0
- 147.泡泡窗实现下拉菜单条
- 泡泡窗口实现下拉菜单,以及改变布局高度
- 在菜单条上添加泡泡提示
- 在菜单条上添加泡泡提示
- 菜单下拉滚动条
- 导航条下拉菜单
- 织梦DedeCMS v5.7 完美实现导航条下拉菜单
- DEDECMS v5.7 完美实现导航条下拉二级菜单
- 织梦DedeCMS v5.7完美实现导航条下拉菜单
- 织梦DedeCMS v5.7完美实现导航条下拉菜单
- js导航条(下拉菜单)
- 纯CSS实现下拉菜单及下拉容器等(纯CSS实现导航条及导航下拉容器)
- CSS实现下拉菜单
- 实现下拉菜单
- Popupwindow实现下拉菜单
- js实现下拉菜单
- Android_Spinner实现下拉菜单
- popwindow实现下拉菜单
- 关于lstm和gru的一些简单资料,讲得比较容易理解
- 剑指offer-面试题45-圆圈中最后剩下的数字
- 递归问题的处理
- 关于新版ADT创建项目时出现appcompat_v7的问题
- 鸟哥的linux私房菜学习笔记5
- 147.泡泡窗实现下拉菜单条
- 贪吃蛇智能版(专家)
- zoj2563 Long Dominoes(状压dp)
- BeanUtils
- macOS逆向开发之class-dump
- Spark-Word Count实例
- Android与JavaSocket的简单示例
- Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with ......
- GreenDao3.0简单使用