PopupWindow的正确使用(代码实现)

实现效果:

PopupWindow的正确使用(代码实现)_第1张图片
 

一、PopupWindow的Xml布局



    

    

    

    

    

        

    

    

        

    

    

    

二、自定义背景shape


    
    
    
    

    
    
    
    


三、Activity的Xml布局



    

四、Activity中的代码

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button but;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        but = (Button) findViewById(R.id.but);

        but.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.but:
                getPopWindow();
                break;
        }
    }

    private void getPopWindow() {
        PopupWindow window = new PopupWindow(this);
        View inflate = getLayoutInflater().inflate(R.layout.layout_head_pw, null);
        //  创建PopupWindow对象,指定宽度和高度
        window = new PopupWindow(inflate,
                LinearLayout.LayoutParams.MATCH_PARENT,
                LinearLayout.LayoutParams.WRAP_CONTENT);
        ImageView img = inflate.findViewById(R.id.finshi);
        final PopupWindow finalWindow = window;
        img.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finalWindow.dismiss();
            }
        });
        //给内部控件添加点击事件
        // TODO:  设置背景颜色
        window.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#F8F8F8")));
        // TODO:  设置可以获取焦点
        window.setFocusable(true);
        // TODO:  设置可以触摸弹出框以外的区域
        window.setOutsideTouchable(true);
        // TODO:更新popupwindow的状态
        //  window.update();
        // TODO:  以下拉的方式显示,并且可以设置显示的位置

        window.showAtLocation(but, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);

    }
}

基本就这些,按部就班来就能够实现效果!!!

你可能感兴趣的:(PopupWindow的正确使用(代码实现))