【android】让popupwindow显示在view的上方并与该view水平居中对齐

首先,废话少说,先上效果图:

代码:

public class MainActivity extends Activity implements OnClickListener{

	private Button showBtn1;
	private Button showBtn2;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		showBtn1 = (Button) findViewById(R.id.showBtn1);
		showBtn2 = (Button) findViewById(R.id.showBtn2);
		showBtn1.setOnClickListener(this);
		showBtn2.setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		View popupView = LayoutInflater.from(this).inflate(R.layout.popup, null);
		PopupWindow popupWindow = new PopupWindow(popupView, ViewGroup.LayoutParams.WRAP_CONTENT,
				ViewGroup.LayoutParams.WRAP_CONTENT, true);
		popupWindow.setBackgroundDrawable(new BitmapDrawable());
		popupView.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
		int popupWidth = popupView.getMeasuredWidth();
		int popupHeight =  popupView.getMeasuredHeight();
		int[] location = new int[2];
		switch (v.getId()) {
		case R.id.showBtn1:
		    v.getLocationOnScreen(location);
		    popupWindow.showAtLocation(v, Gravity.NO_GRAVITY, (location[0]+v.getWidth()/2)-popupWidth/2,
		    		location[1]-popupHeight);
			break;
		case R.id.showBtn2:
		    v.getLocationOnScreen(location);
		    popupWindow.showAtLocation(v, Gravity.NO_GRAVITY, (location[0]+v.getWidth()/2)-popupWidth/2,
		    		location[1]-popupHeight);
			break;

		default:
			break;
		}
	}
}

Demo下载:http://download.csdn.net/detail/u011494050/7787359

【android】让popupwindow显示在view的上方并与该view水平居中对齐,布布扣,bubuko.com

时间: 2024-08-22 17:28:53

【android】让popupwindow显示在view的上方并与该view水平居中对齐的相关文章

Android PopupWindow显示在控件上方或者下方

项目中实现 主要代码如下 View view = mInflater.inflate(R.layout.layout_popupwindow, null); PopUpwindowLayout popUpwindowLayout = (PopUpwindowLayout) view.findViewById(R.id.llayout_popupwindow); popUpwindowLayout.initViews(mContext, titles, false); final PopupWin

Android PopupWindow显示位置和显示大小

<?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:bac

Android PopupWindow显示位置设置

当点击某个按钮并弹出PopupWindow时,PopupWindow左下角默认与按钮对齐,但是如果PopupWindow是下图的那样,会发 生错位的情况,尤其是不同尺寸的平板上,那错位错的不是一般的不靠谱,而Android本身只提供了如下几个方法设置PopupWindow显示位置 showAsDropDown(View anchor, int xoff, int yoff) 以anchor的左下角为参照点,定义偏移 showAsDropDown(android.view.View) 以ancho

Android无需权限显示悬浮窗, 兼谈逆向分析app

最近UC浏览器中文版出了一个快速搜索的功能, 在使用其他app的时候, 如果复制了一些内容, 屏幕顶部会弹一个窗口, 提示一些操作, 点击后跳转到UC, 显示这个悬浮窗不需要申请android.permission.SYSTEM_ALERT_WINDOW权限. 如下图, 截图是在使用Chrome时截的, 但是屏幕顶部却有UC的view浮在屏幕上. 我使用的是小米, 我并没有给UC授悬浮窗权限, 所以我看到这个悬浮窗时是很震惊的. 截图 悬浮窗原理 做过悬浮窗功能的人都知道, 要想显示悬浮窗, 要

[android] 练习PopupWindow实现对话框

练习使用Dialog实习对话框 package com.example.tsh; import android.app.Activity; import android.app.Dialog; import android.os.Bundle; import android.os.Handler; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener;

Android:PopupWindow简单弹窗改进版

Android:PopupWindow简单弹窗 继续上一节的内容,改进一下,目标是点击菜单后把菜单收缩回去并且切换内容,我使用的是PopupWindow+RadioGroup public class MainActivity extends TabActivity { private PopupWindow pop; private TabHost tabhost; private RadioGroup radiogroup; private RadioButton tab1,tab2; @O

android利用PopupWindow实现点击工具栏弹出下拉菜单

1.概述 本文将介绍如何利用PopupWindow实现点击屏幕顶部工具栏按钮弹出下拉菜单的功能.先上图: 2.代码实现 首先是activity_main.xml布局文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width=&qu

Android 使用PopupWindow实现弹出更多的菜单

最近想要做一个弹出更多的菜单,而原生的弹出菜单却不是我们想要的效果,所以必然要自定义菜单咯.本人也是借鉴网上的资料进行封装的,感觉还蛮不错的. 原生的菜单如下图: 自定义之后的效果图: 是不是看到这里之后,对比可知,原生的效果不太理想,所以还是再自己定义吧! 1.PopupWindow可以说是一个浮动在Activity之上的容器,通常用来显示自定义的视图.弹出菜单的封装PopMenuMore /** * 对弹出菜单的封装. * http://blog.csdn.net/maosidiaoxian

Android的PopupWindow使用android学习之旅(四十三)

PopupWindow简介 PopupWindow是一个类似dialog的控件,可以接受任何的view作为下拉列表显示. 用法 代码展示 package peng.liu.test; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.Gravity; im