Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android—PopupWindow的簡單使用,androidpopupwindow

Android—PopupWindow的簡單使用,androidpopupwindow

編輯:關於android開發

Android—PopupWindow的簡單使用,androidpopupwindow


PopupWindow 是一個可以顯示在當前 Activity 之上的浮動容器,這個Demo要實現的功能是,點擊布局中的兩個按鈕,進而控制PopupWindow的顯示與消失,代碼中有詳細的注釋首先看一下效果展示:

在上代碼之前,先總結一下PopupWindow的用法:

1:實例化PopupWindow的對象,三個參數分別對應:填充的布局文件、在當前Activity上所占的寬、高
PopupWindow popupWindow= new PopupWindow(contentView, LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
2:完成第一步所需要的布局文件,並實例出來
View contentView = mLayoutInflater.inflate(R.layout.pop, null)
3:設置PopupWindow 所必備的兩個屬性
     //popupWindow的背景
 (1)popupWindow.setBackgroundDrawable(......);  
     //popupWindow要顯示的位置
 (2)popupWindow.showAtLocation(View parent, int gravity, int x, int y)
接下來,上代碼!
popupWindow所要添加的布局文件:popu_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#87cdff"
    android:columnCount="4"
    android:orientation="horizontal"
    android:rowCount="4">

    <ImageView
        android:layout_width="65dp"
        android:layout_height="65dp"
        android:layout_margin="12dp"
        android:background="@drawable/icon_bank_gongshang" />

    <ImageView
        android:layout_width="65dp"
        android:layout_height="65dp"
        android:layout_margin="12dp"
        android:background="@drawable/icon_bank_guangda" />

    <ImageView
        android:layout_width="65dp"
        android:layout_height="65dp"
        android:layout_margin="12dp"
        android:background="@drawable/icon_bank_jianhang" />

    <ImageView
        android:layout_width="65dp"
        android:layout_height="65dp"
        android:layout_margin="12dp"
        android:background="@drawable/icon_bank_jiaotong" />

    <ImageView
        android:layout_width="65dp"
        android:layout_height="65dp"
        android:layout_margin="12dp"
        android:background="@drawable/icon_bank_minsheng" />

    <ImageView
        android:layout_width="65dp"
        android:layout_height="65dp"
        android:layout_margin="12dp"
        android:background="@drawable/icon_bank_nongye" />

    <ImageView
        android:layout_width="65dp"
        android:layout_height="65dp"
        android:layout_margin="12dp"
        android:background="@drawable/icon_bank_gongshang" />

    <ImageView
        android:layout_width="65dp"
        android:layout_height="65dp"
        android:layout_margin="12dp"
        android:background="@drawable/icon_bank_pingan" />

    <ImageView
        android:layout_width="65dp"
        android:layout_height="65dp"
        android:layout_margin="12dp"
        android:background="@drawable/icon_bank_zhaoshang" />

    <ImageView
        android:layout_width="65dp"
        android:layout_height="65dp"
        android:layout_margin="12dp"
        android:background="@drawable/icon_bank_youzheng" />

    <ImageView
        android:layout_width="65dp"
        android:layout_height="65dp"
        android:layout_margin="12dp"
        android:background="@drawable/icon_bank_xingye" />

    <ImageView
        android:layout_width="65dp"
        android:layout_height="65dp"
        android:layout_margin="12dp"
        android:background="@drawable/icon_bank_pufa" />
</GridLayout>
相當簡單的布局,做出來就是這麼一個玩意:

MainActivity:

 1 package com.example.wgh.popupwindow;
 2 import android.graphics.drawable.ColorDrawable;
 3 import android.support.v7.app.AppCompatActivity;
 4 import android.os.Bundle;
 5 import android.view.Gravity;
 6 import android.view.LayoutInflater;
 7 import android.view.View;
 8 import android.widget.Button;
 9 import android.widget.GridLayout;
10 import android.widget.PopupWindow;
11 
12 public class MainActivity extends AppCompatActivity {
13 
14     private View mPopView = null;
15     private Button showPopupWindow = null;
16     private Button dismissPopupWindow = null;
17     @Override
18     protected void onCreate(Bundle savedInstanceState) {
19         super.onCreate(savedInstanceState);
20         setContentView(R.layout.activity_main);
21 
22         initView();
23         showPopupWindow.setOnClickListener(new View.OnClickListener() {
24             @Override
25             public void onClick(View view) {
26                 showPopupWindow();
27             }
28         });
29     }
30 
31     private void initView() {
32         showPopupWindow = (Button) findViewById(R.id.showPopupWindow);
33         dismissPopupWindow = (Button) findViewById(R.id.dismissPopupWindow);
34         /**
35          * 實例popupWindow要添加的布局
36          */
37         mPopView = LayoutInflater.from(this).inflate(R.layout.popu_layout, null);
38     }
39 
40     private void showPopupWindow() {
41         /**
42          * 實例popupWindow對象
43          */
44         PopupWindow popupWindow = new PopupWindow(mPopView, GridLayout.LayoutParams.MATCH_PARENT, GridLayout.LayoutParams.WRAP_CONTENT);
45         //設置popupWindow中的item可以被點擊,這句話是必須要添加的
46         popupWindow.setFocusable(true);
47         //設置PopupWindow的背景
48         //如果不設置背景,會導致無論是點擊外部區域還是Back鍵都無法dismiss掉popupWindow
49         ColorDrawable dw = new ColorDrawable(0xb0000000);
50         popupWindow.setBackgroundDrawable(dw);
51         //設置popupWindow顯示的位置
52         popupWindow.showAtLocation(showPopupWindow, Gravity.BOTTOM,0,200);
53     }
54 }
最後說一下關於popupWindow顯示位置的屬性設置

1 // 相對某個控件的位置(正左下方),無偏移
2 popupWindow.showAsDropDown(View anchor) 
3 // 相對某個控件的位置,有偏移,xoff 為 X 軸的偏移量,yoff 為 Y 軸的偏移量                          
4 popupWindow.showAsDropDown(View anchor, int xoff, int yoff)
5 // 在父容器的什麼位置,gravity 為相對位置,
6 //如:正中央 Gravity.CENTER、下方 Gravity.BOTTOM、Gravity.RIGHT|Gravity.BOTTOM 右下方等,後面兩個參數為 x/y 軸的偏移量。
7 popupWindow.showAtLocation(View parent, int gravity, int x, int y) 

有興趣的童鞋可以為popupWindow設置上動畫,這樣在彈出的時候,不會顯得那麼突兀,哈哈 
如果有什麼地方是錯誤的,請大家批評指正。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved