PopWindow使用方法详解
来源:互联网 发布:临沂淘宝开店培训 编辑:程序博客网 时间:2024/06/08 10:12
PopWindow 是一个可以在Activity 之上显示任意View的控件。在Android经常使用,效果跟Dialog 效果类似,不同点在于可以控制显示的位置,比如底部显示等。
- 继承关系
- 使用方法
- 底部Popwindow的实现
1. 继承关系
PopWindow 继承关系如下:
java.lang.Object ↳ android.widget.PopupWindow
2. 使用方法
主要是调用PopWindow的构造方法,通过LayoutInflater 将Layout转换成View,然后将View 传递过去,既可以实现,具体可以参考PopWindow 源码
3. 底部Popwindow的实现
- PopWindow 实现效果
- PopWindow 实现类
package com.programandroid.PopWindow;import com.programandroid.R;import android.annotation.SuppressLint;import android.app.Activity;import android.os.Bundle;import android.view.Gravity;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.LinearLayout;import android.widget.PopupWindow;import android.widget.Toast;/* * PopWindowMethods.java * * Created on: 2017-11-1 * Author: wangjie * * Welcome attention to weixin public number get more info * * WeiXin Public Number : ProgramAndroid * 微信公众号 :程序员Android * */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); } }}
- Popwindow 布局
<?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 的使用方法基本结束。
欢迎关注微信公众号:程序员Android
公众号ID:ProgramAndroid
获取更多信息
我们不是牛逼的程序员,我们只是程序开发中的垫脚石。
我们不发送红包,我们只是红包的搬运工。
点击阅读原文,获取更多福利
阅读全文
0 0
- PopWindow使用方法详解
- popwindow详解
- PopWindow的使用方法之一
- popWindow的使用方法
- POPwindow
- popwindow
- popwindow
- PopWindow
- popwindow
- popwindow
- PopWindow
- popwindow
- popwindow
- popwindow
- meta标签使用方法详解
- wget使用方法命令详解
- repeater的使用方法详解
- FCKeditor使用方法技术详解
- vue 中 ref 的用法
- 全选和复选 批量操作 弹框
- 视图
- Javascript setTimeout的用法
- 史上最纯净的Win7专业版系统
- PopWindow使用方法详解
- 【Linux】判断系统当前是否开启了超线程
- JS判断是否输入内容
- linux下so动态库一些不为人知的秘密(上)
- ssh免密码和ssh-copy-id命令
- MySQL取出指定数量的随机记录
- 自定义View
- jupyter notebook小体会
- 飞思卡尔单片机RAM与flash相关问题