zoukankan      html  css  js  c++  java
  • PopupWindow 使用详解

    极力推荐文章:欢迎收藏
    Android 干货分享

    阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android

    本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:

    1. PopupWindow 继承关系
    2. PopupWindow 使用方法
    3. PopupWindow 底部PopupWindow的实现

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

    1. PopupWindow简介

    PopupWindow继承关系如下:

    java.lang.Object
       ↳
         android.widget.PopupWindow
    

    2. 使用方法

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

    PopWindows构造方法及常用方法

    3. 底部PopupWindow的实现

      1. PopupWindow实现效果

    底部Popwindow实现效果

      1. 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();
    	}
    }
    
      1. 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 的使用方法基本结束。

    至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

    微信关注公众号:  程序员Android,领福利

  • 相关阅读:
    欧拉函数的递推形式
    Hadoop运行startdfs.sh报ERROR: Attempting to operate on hdfs as root错误的解决方法
    Solr+ZooKeeper运行报错
    Linux的查找命令
    Solr报警告java.nio.file.NoSuchFileException: /solr/xxx_shard_replica_xx/../../../../contrib/extraction/lib
    利用脚本批量操作Tomcat集群
    大数据组件的日志的时区问题
    利用脚本批量操作ZooKeeper集群
    Solr报错org.apache.solr.common.SolrException: undefined field text
    Solr/SolrCloud报警告Your ZK connection string ( hosts) is different from the dynamic ensemble config ( hosts)的解决方法
  • 原文地址:https://www.cnblogs.com/wangjie1990/p/11310831.html
Copyright © 2011-2022 走看看