<?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:background="#DA4F30" android:cacheColorHint="#000000" android:orientation="vertical" > <ListView android:id="@+id/lv_dialog" android:layout_width="match_parent" android:layout_height="match_parent" android:cacheColorHint="#00000000" android:scrollbars="none" android:overScrollMode="never"> </ListView> </LinearLayout>
package com.example.showpop; import android.app.Activity; import android.content.Context; import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.view.WindowManager; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.PopupWindow; public class MainActivity extends Activity { private LinearLayout layout; private ListView listView; private PopupWindow popupWindow; private String title[] = { "1", "2", "3", "4", "5" }; private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); imageView=(ImageView) findViewById(R.id.imageview_above_more); imageView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { showPopupWindow(imageView); } }); } public void showPopupWindow(View parent) { //加载布局 layout = (LinearLayout) LayoutInflater.from(MainActivity.this).inflate( R.layout.dialog, null); //找到布局的控件 listView = (ListView) layout.findViewById(R.id.lv_dialog); //设置适配器 listView.setAdapter(new ArrayAdapter<String>(MainActivity.this, R.layout.text, R.id.tv_text, title)); // 实例化popupWindow popupWindow = new PopupWindow(layout, 300,500); //控制键盘是否可以获得焦点 popupWindow.setFocusable(true); //设置popupWindow弹出窗体的背景 popupWindow.setBackgroundDrawable(new BitmapDrawable(null,"")); WindowManager manager=(WindowManager) getSystemService(Context.WINDOW_SERVICE); @SuppressWarnings("deprecation") //获取xoff int xpos=manager.getDefaultDisplay().getWidth()/2-popupWindow.getWidth()/2; //xoff,yoff基于anchor的左下角进行偏移。 popupWindow.showAsDropDown(parent,xpos, 0); //监听 listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { //关闭popupWindow popupWindow.dismiss(); popupWindow = null; } }); } }源码下载地址
Android PopupWindow显示位置和显示大小,布布扣,bubuko.com
原文:http://blog.csdn.net/xiaoyuan511/article/details/38711323