4.PopupWindow

想要弹出内容就可以考虑使用悬浮窗

布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/rl_root"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".LoginActivity" >
    <com.handmark.pulltorefresh.library.PullToRefreshListView
        android:id="@+id/lv_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:background="#fff" />
    <View
        android:id="@+id/viewHolder"
        android:layout_width="match_parent"
        android:layout_height="53dp"
        android:visibility="gone" />
</LinearLayout>

 代码

	lv_list.setOnItemLongClickListener(new OnItemLongClickListener() {
			@Override
			public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
				Toast.makeText(getApplicationContext(), "长按", 0).show();
				//开启编辑模式
				startEditModel();
				if (position > 0) {
					position -= 1;
				}
				adapter.toggleSelect(view, position);
				return true;
			}
		});
	}
	private boolean isEditModel;
	private int seletedCount;

	/**
	 * 开启编辑模式
	 */
	private void startEditModel() {
		//listview需要刷新
		isEditModel = true;
		adapter.notifyDataSetChanged();
		//修改actionbar
		uploadMenuItem.setVisible(false);
		downloadMenuItem.setVisible(false);
		moreMenuItem.setVisible(false);
		selectMenuItem.setVisible(true);
		actionBar.setDisplayHomeAsUpEnabled(true);
		actionBar.setTitle(String.format("已选定%d个", seletedCount));
		//显示底部的popupwindows
//当在最 底部时会覆盖条目,可以在下面弄个view,让他显示
		showBottomPopupWindow();
		//listview上移
		viewHolder.setVisibility(0);
	}
	/**
	 * 结束编辑模式
	 */
	private void stopEditModel() {
		//listview需要刷新
		isEditModel = false;
		adapter.notifyDataSetChanged();
		//修改actionbar
		uploadMenuItem.setVisible(true);
		downloadMenuItem.setVisible(true);
		moreMenuItem.setVisible(true);
		selectMenuItem.setVisible(false);
		actionBar.setTitle("黑马网盘");
		//返回按钮的处理
		if ("/".equals(curPath)) {
			actionBar.setDisplayHomeAsUpEnabled(false);
		}
		//隐藏popupwindows
		bottomPopupWindow.dismiss();
		//listview还原
		viewHolder.setVisibility(8);
		//还原entryWrapper的选中状态
		for (EntryWrapper entryWrapper : contents) {
			entryWrapper.isCheck = false;
		}
		seletedCount = 0;
	}
	private void showBottomPopupWindow() {
		if (bottomPopupWindow == null) {
			View contentView = View.inflate(MainActivity.this, R.layout.bottom_edit_pop, null);
			int width = ViewGroup.LayoutParams.FILL_PARENT;
			int height = ViewGroup.LayoutParams.WRAP_CONTENT;
			bottomPopupWindow = new PopupWindow(contentView, width, height);
			contentView.findViewById(R.id.DeleteBtn).setOnClickListener(new OnClickListener() {
				@Override
				public void onClick(View v) {
					List<EntryWrapper> selectedEntryWrappers = new ArrayList<EntryWrapper>();
					for (EntryWrapper info : contents) {
						if (info.isCheck) {
							selectedEntryWrappers.add(info);
						}
					}
					StringBuffer sb = new StringBuffer();
					//遍历输出
					for (EntryWrapper entryWrapper : selectedEntryWrappers) {
						sb.append(entryWrapper.entry.fileName()).append(" ");
					}
					System.out.println(sb.toString());
				}
			});
		}
		bottomPopupWindow.showAtLocation(rl_root, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
	}

  

时间: 2025-01-02 01:08:10

4.PopupWindow的相关文章

Android新手入门2016(13)--阻塞对话框PopupWindow

上两章都说了非阻塞的对话框,今天说一下阻塞的对话框--PopupWindow 那么什么是阻塞什么是非阻塞呢?PopupWindow和AlertDialog有什么不同呢? 先说AlertDialog,弹出来之后,背面会变灰,并没有阻塞后台的进程,如果没特殊控制,点击后面灰暗处,弹框会消失掉的. 至于PopupWindow,则是弹出来,后面没有任何变化,并且阻塞该应用的进程,如果一直没退出,应用汇一直等待,点击后面也是没有反应的. 不知道为什么现在上传不了图,就不上传了,其实跟AlertDialog

Android封装类似微信的顶部TitleBar弹出的PopupWindow代码

Android仿微信顶部titlebar,点击加号弹出的PopupWindow,是封装好的PopupWindow,直接拿来用即可,先看效果图:  调用代码非常简单,这是MainActivity的代码: public class MainActivity extends AppCompatActivity { private TitlePopup titlePopup; @Override protected void onCreate(Bundle savedInstanceState) { s

android:PopupWindow的使用场景和注意事项

1.PopupWindow的特点 借用Google官方的说法: "A popup window that can be used to display an arbitrary view. The popup window is a floating container that appears on top of the current activity." 也就是说.popupwindow是activity上方的一个悬浮容器.它能够显示随意的视图View,非常霸气的样子. 以下看一

PopupWindow

package com.panjn.userinterface; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.widget.PopupWindow; public class MainActi

弹出窗口:PopupWindow 详解

效果如图所示,点击开始按钮,popWindow从下往上出来,再点击popWindow外面,popWindow又从上往下消失 可以看出来,上面的popupWindow是半透明的,后面我会细说. 最基本的是activity_main了,很简单,就只是一个button,这里我就不贴代码了. 接下来的是,popWindow的界面了 代码如下: 这里注意我里面的那个注释 <?xml version="1.0" encoding="utf-8"?> <Line

安卓开发入门教程全-PopupWindow用法大全

都是一群技术宅,先给大家说一个严酷的现实吧,现在是6月份,多少人顶着大太阳在找工作,现在我们既然有不错的工作或者想通过安卓学好的,我都希望每一个人去实践,就像Android开发入门QQ群:175229978很多人一样,肯去敲代码,不嫌弃麻烦. 首先给大家介绍安卓PopupWindow,不要嫌弃我讲解的有些详细. Android的对话框有两种:PopupWindow和AlertDialog.它们的不同点在于:AlertDialog的位置固定,而PopupWindow的位置可以随意AlertDial

Android之自定义AlertDialog和PopupWindow实现(仿微信Dialog)

我们知道,在很多时候,我们都不用Android内置的一些控件,而是自己自定义一些自己想要的控件,这样显得界面更美观. 今天主要是讲自定义AlertDialog和popupWindow的使用,在很多需求中,我们往往需要这样一个功能,就是点击一个按钮或者其它控件,弹出一个对话框,让用户可以在这个对话框中做一些事,比如输入.选择.提示.....等等,那么,这个弹出对话框的功能我们都知道可以用popupWindow和AlertDialog实现,的却,popupWindow被称为万能的,因为它的布局都是我

【Android UI设计与开发】7.底部菜单栏(四)PopupWindow 实现显示仿腾讯新闻菜单

前一篇文章中有用到 PopupWindow 来实现弹窗的功能.简单介绍以下吧. 官方文档是这样解释的:这就是一个弹出窗口,可以用来显示一个任意视图.出现的弹出窗口是一个浮动容器的当前活动. 1.首先来个简单的栗子,效果如下: 只有两个布局文件,一个是弹窗布局(只有一张图片),一个是主界面布局(只有一个按钮). 然后在主界面代码中实例 PopupWindow ,指定弹出的界面,在按钮点击事件中显示或隐藏弹窗就可以了,代码如下: package com.yanis.demo; import andr

Android对话框(四)PopupWindow

主布局 <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:paddi

android PopupWindow与键盘

一些表示方式 键盘高度:keyboardHeight;   屏幕高度:screenHeight; popupwindow高度:popHeight;  popupwindow距离屏顶:popTop; 第一部分:系统键盘相关 1.设置 mPopupWindow.setInputMethodMode(Popupwindows.iNPUT_METHOD_NEEDED); mPopupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT