安卓PopupWindow使用详解与源码分析(附项目实例)

本文详细介绍了安卓PopupWindow的使用,包括定义布局、显示与隐藏、优化、注意事项、动画设置、事件响应等。还探讨了如何自定义显示位置,源码分析了PopupWindow的工作原理,并提供了项目实例链接,帮助开发者深入理解和应用PopupWindow。
摘要由CSDN通过智能技术生成

基本用法

首先定义弹窗的Layout文件

res/layout/popup_window.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:background="#44000000"
   android:gravity="center_vertical"
   android:orientation="horizontal"
   android:padding="5dp">

   <ImageView
       android:id="@+id/popup_icon"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:src="@drawable/ic_launcher" />

   <TextView
       android:id="@+id/popup_text"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@string/app_name" />

</LinearLayout>

显示

private PopupWindow pop;

private void showPopupWindowBasic() {
   View rootView = getLayoutInflater().inflate(R.layout.popup_window, null);
   mPopupText = (TextView) rootView.findViewById(R.id.popup_text);
   mPopupText.setText("PopupTextBasic");

   mPopupWindow = new PopupWindow(rootView,
           ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
   mPopupWindow.showAsDropDown(mTextView);
}

上述代码中,在PopupWindow实例化时指定了显示的View,宽高均为WRAP_CONTENT,也可以指定固定的尺寸(直接传入int型的px像素值即可)。

注意:这里通过Java代码设置的PopupWindow尺寸会直接覆盖Layout文件中顶层控件的尺寸。如果希望能直接在xml中指定弹窗的固定尺寸,且修改尺寸时不需要修改Java代码,从而让代码更加规范,可以考虑对Layout指定尺寸的同时,在其外层再嵌套一个FrameLayout,Java代码中指定PopupWindow宽高均为WRAP_CONTENT,即:

<FrameLayout
    android:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值