欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PopupWindow 横向居中显示,当设置带有箭头形式的背景图时,去掉四边阴影

程序员文章站 2022-05-31 10:55:56
...

解决两个问题
- PopupWindow 横向居中显示
- 当给 popupWindow 设置背景图片时,去掉黑边

让 PopupWindow 横向居中显示在某个 View 的下面

这里我在 Activity 中放了一个横向的 TextView ,在顶部,点击的时候在其下方显示 PopupWindow,代码如下:

PopupWindow popupWindow;

    private void showPop() {
        View popView = View.inflate(PopWindowActivity.this, R.layout.pop_item, null);
        popupWindow = new PopupWindow(getResources().getDisplayMetrics().widthPixels / 2,
                getResources().getDisplayMetrics().heightPixels / 2);
        popupWindow.setContentView(popView);
        popupWindow.setOutsideTouchable(true);
        // 如果不设置这句代码,点击 pop 以外区域是不会被 dismiss 的.
        popupWindow.setBackgroundDrawable(new BitmapDrawable());
        ListView listView = popView.findViewById(R.id.lv_pop);
        listView.setAdapter(new ArrayAdapter<String>(PopWindowActivity.this,
                android.R.layout.simple_list_item_1, arrays));
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                textView.setText(arrays[i]);
                popupWindow.dismiss();
            }
        });

        // 根据 pop 占据屏幕的宽度,计算出 pop 的便宜位置,使其显示在横向正中间
        popupWindow.showAsDropDown(textView, getResources().getDisplayMetrics().widthPixels / 4,
                0, Gravity.CENTER);
    }

这里的 pop 里面是一个 ListView,为了区分界面颜色给 ListView 设置了背景,其他设置见注释。效果图如下:
PopupWindow 横向居中显示,当设置带有箭头形式的背景图时,去掉四边阴影

Popwindow 设置背景图片(带尖角)边缘有阴影,去掉阴影做法

在代码中给 pop 设置 backgroundDrawable 为系统的透明颜色或者下面方式都可以.

/** 
 * 生成一个 透明的背景图片 
 * @return 
 */
private Drawable getDrawable(){  
        ShapeDrawable bgdrawable =new ShapeDrawable(new OvalShape());  
        bgdrawable.getPaint().setColor(MainActivity.this.getResources().getColor(android.R.color.transparent));  
        return   bgdrawable;  
}

这种的应用场景大多是:界面右上角的图标,点击的时候在其下方弹出一个带有三角箭头的 pop,如果这个三角箭头连同 pop 的背景是一张图片的时候,会出现边缘阴影。


Android 技术分享平台
PopupWindow 横向居中显示,当设置带有箭头形式的背景图时,去掉四边阴影