安卓进阶系列-03上弹选择框(PopupDialog)的使用

主要介绍上弹选择框的使用,这个功能基于Dialog实现,为安卓开发常见控件之一。实现方式并非利用第三方控件而是利用安卓原生对话框控件,不过样式自定义了。

1.布局使用



    

    

    


2.代码实现

package com.zc.testforpopupdialog;

import android.app.Dialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btn = (Button) findViewById(R.id.btn_test);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showPopupDialog();
            }
        });
    }

    private void showPopupDialog() {
        Dialog bottomDialog = new Dialog(this, R.style.BottomDialog);
        View contentView = LayoutInflater.from(this).inflate(R.layout.dialog, null);
        bottomDialog.setContentView(contentView);
        ViewGroup.LayoutParams layoutParams = contentView.getLayoutParams();
        layoutParams.width = getResources().getDisplayMetrics().widthPixels;
        contentView.setLayoutParams(layoutParams);
        bottomDialog.getWindow().setGravity(Gravity.BOTTOM);
        bottomDialog.getWindow().setWindowAnimations(R.style.BottomDialog_Animation);
        bottomDialog.setCanceledOnTouchOutside(true);
        bottomDialog.show();
        // 这里一定要使用对话框的findViewByID,用Activity的将无法捕获
        TextView tv = (TextView) bottomDialog.findViewById(R.id.tv_test);
        tv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"你点击了第一个选项",Toast.LENGTH_LONG).show();
            }
        });

    }
}

3.效果演示

 

注意:dialog上的控件必须使用该dialog调用findViewByID而不能使用Activity进行绑定,因为这些控件本质上是不存在Activity上的,而是暂存在dialog上。

项目GitHub地址:https://github.com/luanshiyinyang/TestForPopupDialog

你可能感兴趣的:(Android)