摘自:安卓APP_ 控件(9)—— PopupWindow弹窗
作者:丶PURSUING
发布时间: 2021-04-05 14:41:35
网址:https://blog.csdn.net/weixin_44742824/article/details/115405555
实现效果如下:
点击触发弹窗的按钮,弹窗出现。弹窗里的按钮设置了监听事件,当点击“上海”时,弹窗不退出。点击空白处弹窗退出。因为“北京”设置了“dismiss”,所以点击“北京”直接退出弹窗。
具体细节还是通过代码呈现:
MainActivity.java
public class MainActivity extends AppCompatActivity {private static final String TAG = "zhua";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void zhuaClick(View view) {/*第一个参数contentView:弹窗显示的布局,在此之前要在layout创建布局.xml*/View popupView = getLayoutInflater().inflate(R.layout.popup_view, null);//添加view//为了实现popupWindow中的按钮事件,要先获取按钮监听Button btn1 = popupView.findViewById(R.id.btn1);Button btn2 = popupView.findViewById(R.id.btn2);/*1.为了方便,都用带3参或者4参的构造方法,否则后面还要用对象进行设置2.根据popupWindow的一个构造方法进行配置,宽、高可以直接写数字,比如300,300但是为了让popupWindow刚好包裹住popupView,一般如下设置:跟xml中类似,都是为了内容适应窗口3.true为获取焦点,即点空白处可以退出popupWindow*/PopupWindow popupWindow = new PopupWindow(popupView, ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT,true);/*设置这个背景会导致虚拟机崩溃?*///popupWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.test1));/*1.想要显示弹窗,还要调用show.2.view指的是“弹出PopupWindow”按钮,一般不使用偏移,直接显示在正下方。popupWindow.showAsDropDown(view,view.getWidth(),view.getHeight());*/popupWindow.showAsDropDown(view);//弹窗直接显示在view的正下方//设置按钮监听btn1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Log.e(TAG, "onClick: 你是住在上海吗" );}});btn2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Log.e(TAG, "onClick: 你是住在北京吗" );//一般popupWindow按钮事件点击一个选项window就消失:popupWindow.dismiss();}});/*其他:设置popupwindow显示动画,只需要传入后续所学的动画.xml就行popupWindow.setAnimationStyle(int animationStyle);*/}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
activity_main.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:orientation="vertical"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="弹出PopupWindow "android:onClick="zhuaClick"/></LinearLayout>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
在res下的layout创建的:popup_view.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:background="@mipmap/ic_launcher"android:orientation="vertical"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/btn1"android:padding="10dp"android:text="上海"android:textSize="18sp"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/btn2"android:padding="10dp"android:text="北京"android:textSize="18sp"/></LinearLayout>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25