Android開發使用PopupWindow在指定View上/下/左/右顯示(選單在指定位置顯示)
阿新 • • 發佈:2019-01-09
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);