自定义PopupWindow与BitmapDrawable不推荐使用的方法

时间:2015-06-30 13:16:01

标签: android deprecated popupwindow bitmapdrawable

在我的应用程序中使用自定义PopupWindow使用

popup.setBackgroundDrawable(new BitmapDrawable());

方法。现在它已被弃用,如果没有这种方法,我就无法为弹出窗口提供背景信息。我从文章中读到它的替代方案是

popup.setsetBackgroundDrawable(new BitmapDrawable(Context.Resources,Drawable);

但是我的popUp并没有使用任何drawable。我的代码在下面给出了我自定义Popupwindow的位置,这里是为了解决这个问题。

@Override
    public void onWindowFocusChanged(boolean hasFocus) {

        int[] location = new int[2];
        Button button = (Button) findViewById(R.id.VBG_img_pin_x);

        // Get the x, y location and store it in the location[] array
        // location[0] = x, location[1] = y.
        button.getLocationOnScreen(location);

        // Initialize the Point with x, and y positions
        p = new Point();
        p.x = location[0];
        p.y = location[1];
    }

    // The method that displays the popup.
    private void showPopup(final Activity context, Point p) {

//      Display display = getWindowManager().getDefaultDisplay();

        DisplayMetrics display = this.getResources().getDisplayMetrics();

        int width = display.widthPixels;
        int height = display.heightPixels;

//      int width = display.getWidth(); // deprecated
//      int height = display.getHeight(); // deprecated

        int popupWidth = width / 2;
        int popupHeight = height;

        ChatUtils.getScreenHeight(getBaseContext());

        // Inflate the popup_layout.xml
        LinearLayout viewGroup = (LinearLayout) context
                .findViewById(R.id.popup);

        LayoutInflater layoutInflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View layout = layoutInflater.inflate(R.layout.popup_layout, viewGroup);

        onSetAlpha(240, layout);
//      layout.setAlpha((float) 0.95);

        // Creating the PopupWindow
        final PopupWindow popup = new PopupWindow(context);

        popup.setTouchable(true);
        popup.setFocusable(false);
        popup.setOutsideTouchable(true);
        popup.setContentView(layout);
        popup.setWidth(popupWidth);
        popup.setHeight(popupHeight);
        popup.setFocusable(true);

        // Some offset to align the popup a bit to the right, and a bit down,
        // relative to button's position.
        // Clear the default translucent background
        popup.setBackgroundDrawable(new BitmapDrawable());

}

2 个答案:

答案 0 :(得分:5)

if want to clean the background, as stated in your comment

//Clear the default translucent background

you can use

popup.setBackgroundDrawable(null);

答案 1 :(得分:2)

如果要为背景着色

,请使用此选项
 popup.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.white)));

不推荐这样做。