PopupWindow 使用详解
极力推荐文章:欢迎收藏Android 干货分享
本篇文章主要介绍 Android
开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:
PopupWindow 继承关系
PopupWindow 使用方法
PopupWindow 底部PopupWindow的实现
PopupWindow
是一个可以在Activity
之上显示任意View
的控件。在Android
经常使用,效果跟Dialog
效果类似,不同点在于可以控制显示的位置,比如底部显示等。
1. PopupWindow简介
PopupWindow继承关系如下:
java.lang.Object
↳
android.widget.PopupWindow
2. 使用方法
主要是调用PopWindow
的构造方法,通过LayoutInflater
将Layout
转换成View
,然后将View
传递过去,既可以实现,具体可以参考PopupWindow
源码,源码路径如下:framework/base/core/java/android/widget/PopupWindow.java
PopWindows构造方法及常用方法
3. 底部PopupWindow的实现
PopupWindow实现效果
底部Popwindow实现效果
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();
}
}
PopupWindow布局
<?xml version="1.0" encoding="utf-8"?>
<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>
至此、PopWindow 的使用方法基本结束。
长按识别二维码,领福利
至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!
如有侵权,请联系小编,小编对此深感抱歉,届时小编会删除文章,立即停止侵权行为,请您多多包涵。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!