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

解决两个问题
- 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 技术分享平台
code小生

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

code小生

有头像,我们容易成为朋友

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值