zoukankan      html  css  js  c++  java
  • 12 PopupWindow

    PopupWindow创建方式

    1. PopupWindow pop = new PopupWindow()
    2. PopupWindow pop = new PopupWindow(上下文, 填充宽, 填充高);

    java代码:

    package com.fmy.popwindowdemo;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Environment;
    import android.view.Gravity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.PopupWindow;
    import android.widget.LinearLayout.LayoutParams;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
    
        public void click(View v) {
    
            //获取布局填充器
            LayoutInflater inflater = LayoutInflater.from(this);
    
            //把布局填充一个view
            View converView = inflater.inflate(R.layout.layout, null);
    
            //创建一个pop
            PopupWindow pop = new PopupWindow();
            //吧view放入
            pop.setContentView(converView);
            //设置pop的宽
            pop.setWidth(LayoutParams.MATCH_PARENT);
            //设置pop的高
            pop.setHeight(LayoutParams.MATCH_PARENT);
            //找到一个view 为了设置pop弹出的位置
            View tv = findViewById(R.id.tv);
            //弹出到tv下方
            pop.showAsDropDown(tv);
    
    
        }
    }
    

    填充成view 的代码

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:background="#ffff00"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="你好" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="不好" />
    
    </LinearLayout>

    main布局文件

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.fmy.popwindowdemo.MainActivity" >
    
        <TextView
            android:id="@+id/tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="@string/hello_world" />
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="click"
            android:text="嘿嘿" />
    
    </RelativeLayout>

    效果图
    这里写图片描述

    解释效果图:
    pop.setWidth(LayoutParams.MATCH_PARENT);
    //设置pop的高
    pop.setHeight(LayoutParams.MATCH_PARENT);
    pop.showAsDropDown(tv);
    必须要在tv下方 由填充父元素所以导致生成上述界面


    java代码

    package com.fmy.popwindowdemo;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Environment;
    import android.view.Gravity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.PopupWindow;
    import android.widget.LinearLayout.LayoutParams;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
    
        public void click(View v) {
    
            //获取布局填充器
            LayoutInflater inflater = LayoutInflater.from(this);
    
            //把布局填充一个view
            View converView = inflater.inflate(R.layout.layout, null);
    
            //创建一个pop
            PopupWindow pop = new PopupWindow();
            //吧view放入
            pop.setContentView(converView);
            //设置pop的宽
            pop.setWidth(LayoutParams.WRAP_CONTENT);
            //设置pop的高
            pop.setHeight(LayoutParams.WRAP_CONTENT);
            //找到一个view 为了设置pop弹出的位置
            View tv = findViewById(R.id.tv);
            //弹出到tv下方 并且相对于此位置的偏移量
            pop.showAsDropDown(tv,100, 50);
    
    
        }
    }
    

    其他代码 和上一个例子一样

    效果图

    这里写图片描述

    效果图解释

        //设置pop的宽
        pop.setWidth(LayoutParams.WRAP_CONTENT);
        //设置pop的高
        pop.setHeight(LayoutParams.WRAP_CONTENT);
        //找到一个view 为了设置pop弹出的位置
        View tv = findViewById(R.id.tv);
        //弹出到tv下方 并且相对于此位置的偏移量
        pop.showAsDropDown(tv,100, 50);
    

    在tv控件下方然后相对于x便宜100 还有y便宜50 并且由于pop为包裹内容故有此效果


    java代码:

    package com.fmy.popwindowdemo;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Environment;
    import android.text.Layout;
    import android.view.Gravity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.PopupWindow;
    import android.widget.LinearLayout.LayoutParams;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
    
        public void click(View v) {
    
            //获取布局填充器
            LayoutInflater inflater = LayoutInflater.from(this);
    
            //把布局填充一个view
            View converView = inflater.inflate(R.layout.layout, null);
    
            //创建一个pop
            PopupWindow pop = new PopupWindow(converView,android.app.ActionBar.LayoutParams.WRAP_CONTENT,android.app.ActionBar.LayoutParams.WRAP_CONTENT);
    
    
            //找到一个view 为了设置pop弹出的位置
            View tv = inflater.inflate(R.layout.activity_main, null);
    
    
            pop.showAtLocation(tv, Gravity.RIGHT,0,50);
    
        }
    }
    

    效果图:
    这里写图片描述

    效果图解释:

        View tv = inflater.inflate(R.layout.activity_main, null);
    
    
        pop.showAtLocation(tv, Gravity.RIGHT,0,50);
        由于相对于父布局显示 又设置了Gravity.RIGHT所以pop在右边显示 然后在Y轴偏移50导致了最后的效果
    
  • 相关阅读:
    【腾讯敏捷转型NO.1】敏捷是什么鬼?
    【敏捷实用工具】JIRA介绍以及使用方法
    SpringCloud学习总结(三)——案例环境搭建
    SpringCloud学习总结(二)——SpringCloud微服务概述
    SpringCloud学习总结(一)——微服务基础知识
    IDEA jrebel 破解
    IDEA的几个常用配置,日常开发必备。
    java中实体类的区别
    zookeeper 学习总结(四)——基本使用
    zookeeper 学习总结(三)——linux上部署单机以及集群
  • 原文地址:https://www.cnblogs.com/muyuge/p/6152267.html
Copyright © 2011-2022 走看看