1. 程式人生 > >Android開發使用PopupWindow在指定View上/下/左/右顯示(選單在指定位置顯示)

Android開發使用PopupWindow在指定View上/下/左/右顯示(選單在指定位置顯示)

PupopWindow動態獲取顯示的位置,並新增指示箭頭 
效果圖

專案地址:(歡迎star)

使用方法

     mLucklyPopopWindow = new LucklyPopopWindow(this);
        //給popupWindow新增資料
        mLucklyPopopWindow.setData(getResources().getStringArray(R.array.popupArray), new int[]{R.mipmap.add, R.mipmap.delete, R.mipmap.modify, R.mipmap.update});

        mAdapter.setOnItemClickListener(new RecyclerAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                //必須設定寬度
                mLucklyPopopWindow.setWidth(150);
                //監聽事件
                mLucklyPopopWindow.setOnItemClickListener(new LucklyPopopWindow.OnItemClickListener() {
                    @Override
                    public void onItemClick(int position) {
                        Toast.makeText(MainActivity.this, "點選的位置" + position, Toast.LENGTH_SHORT).show();
                        mLucklyPopopWindow.dismiss();
                    }
                });

                //新增分割線(可選)
                mLucklyPopopWindow.addItemDecoration(LucklyPopopWindow.VERTICAL,Color.GRAY,1);
                //設定image不顯示(可選)
               // mLucklyPopopWindow.setImageDisable(true);
                //設定image的大小(可選)
                mLucklyPopopWindow.setImageSize(20,20);
                //顯示popopWindow
                mLucklyPopopWindow.show(getWindow().getDecorView(), view);

            }
        });


常用的方法

1、新增資料

   新增資料的時候,內容和圖片的個數應該相同;如果不需要新增圖片的話,那麼使用第一個和第四個方法,傳遞的Bitmap=null即可。

     void setData(DataBeans[] strings);
     void setData(String[] data, int[] images);
     void setData(String[] data, Bitmap[] images);
     void setData(List<DataBeans> list);

2、設定LucklyPopupWindow的寬度(必須設定)

   LucklyPopupWindow的寬度(必須設定);設定的單位是dp。

     void setWidth(int widthDp);

3、給每一個Item新增分割線

   預設的情況是沒有分割線的。需要呼叫以下方法。

     //可以自己新增RecyclerView的分割線
     addItemDecoration(RecyclerView.ItemDecoration itemDecoration);
     //使用內部封裝好了的分割線,傳入的引數分別是:方向,顏色,分割線的寬
     addItemDecoration(int oritation, int color, int lineHeight);

4、設定背景顏色

   也就是設定三角形和矩形框的背景顏色

     setBackgroundColor(int backgroundColor);

5、設定PopupWindow顯示時Activity其餘部分顯示灰色程度

   取值範圍0.0<=darkBackgroundDegree<=1.0f

     setDarkBackgroundDegree(float darkBackgroundDegree);

6、設定字型的顏色和大小

     setTextColor(int textColor);
     setTextSize(int textSize);

7、設定圖片不顯示以及設定圖片大小

     setImageDisable(boolean imageDisable);
     setImageSize(int widthDp,int heightDp);

8、新增監聽事件

     void setOnItemClickListener(LucklyPopopWindow.OnItemClickListener onItemClickListener);

9、設定箭頭的寬,高,圓角矩形的半徑

     void setTriangleWidth(int triangleWidth);
     void setTrianleHeight(int trianleHeight);
     void setRadius(int radius);

10、在某個View下/上顯示(自動判斷上下)

   注意:這個方法必須最後呼叫。

    void show(View parentView, View positionView);

LucklyPopouWindow的使用方法。