PopupWindow 使用详解

共 3329字,需浏览 7分钟

 ·

2020-12-17 13:20

和你一起终身学习,这里是程序员Android

经典好文推荐,通过阅读本文,您将收获以下知识点:

一、PopupWindow简介
二、PopupWindow 的使用方法
三、底部PopupWindow的实现

一、PopupWindow简介

在学习PopupWindow之前,我们先了解一下PopupWindow的继承关系。
PopupWindow继承关系如下:

java.lang.Object

android.widget.PopupWindow

PopupWindow 是一个可以在Activity之上显示任意View的控件。在Android经常使用,效果跟Dialog效果类似,不同点在于可以控制显示的位置,比如底部显示等。

二、PopupWindow 的使用方法

主要是调用PopWindow的构造方法,通过LayoutInflater 将Layout转换成View,然后将View 传递过去,既可以实现,具体可以参考PopupWindow 源码,源码路径如下:framework/base/core/java/android/widget/PopupWindow.java

PopWindows构造方法及常用方法

三、底部PopupWindow的实现

1. PopupWindow实现效果

底部Popwindow实现效果

2. PopWindow 实现类

public class PopWindowMethods extends Activity {
private View mPopView;
private PopupWindow mPopupWindow;
private Button btn_pop_ok;
private Button btn_pop_cancel;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_popwindow);

InitPopWindow();
InitView();
InitClick();
}

/**
*
*/

private void InitClick() {
// TODO Auto-generated method stub
btn_pop_ok.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "ok", 0).show();
}
});

btn_pop_cancel.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "cancel", 0).show();
}
});
}

/**
*
*/

private void InitPopWindow() {
// TODO Auto-generated method stub
// 将布局文件转换成View对象,popupview 内容视图
mPopView = getLayoutInflater().inflate(R.layout.popwindow_layout, null);
// 将转换的View放置到 新建一个popuwindow对象中
mPopupWindow = new PopupWindow(mPopView,
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
// 点击popuwindow外让其消失
mPopupWindow.setOutsideTouchable(true);
// mpopupWindow.setBackgroundDrawable(background);

}

/**
*
*/

private void InitView() {
btn_pop_ok = (Button) mPopView.findViewById(R.id.btn_pop_ok);
btn_pop_cancel = (Button) mPopView.findViewById(R.id.btn_pop_cancel);

}

@SuppressLint("NewApi")
public void ShowPopWindow(View view) {
if (mPopupWindow.isShowing()) {
mPopupWindow.dismiss();
} else {
// 设置PopupWindow 显示的形式 底部或者下拉等
// 在某个位置显示
mPopupWindow.showAtLocation(mPopView, Gravity.BOTTOM, 0, 30);
// 作为下拉视图显示
// mPopupWindow.showAsDropDown(mPopView, Gravity.CENTER, 200, 300);
}

// Toast.makeText(
// getApplicationContext(),
// "Launcher:"
// + PackageUtils.isLauncherAPK(getApplicationContext(),
// "com.miui.home"),
// 0).show();
}
}

3. PopupWindow布局


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="16dp"
android:background="@drawable/popwindow_bg" >


<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center"
android:orientation="vertical" >


<TextView
android:id="@+id/tv_pop_tittle"
android:layout_width="match_parent"
android:layout_height="45dp"
android:gravity="center"
android:text="PopWindow Tittle" />


<TextView
android:id="@+id/tv_pop_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="left|center_horizontal"
android:padding="20dp"
android:text="是否要退出Popwindows ? " />


<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_margin="3dp"
android:background="@color/white_line" />


<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >


<Button
android:id="@+id/btn_pop_ok"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:background="@drawable/custom_btn_white_selector"
android:gravity="center"
android:text="OK" />


<Button
android:id="@+id/btn_pop_cancel"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_margin="10dp"
android:layout_marginBottom="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:background="@drawable/custom_btn_white_selector"
android:gravity="center"
android:text="Cancel" />

LinearLayout>
LinearLayout>

RelativeLayout>


至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除。同时感谢您的阅读,期待您的关注。

点个在看,方便您使用时快速查找!

浏览 42
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报