先上图 


实现代码

package com.jock.alertdialog;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.view.KeyEvent;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.inputmethod.InputMethodManager;import android.widget.EditText;import android.widget.Toast;/** * 精仿iOSAlertViewController控件Demo */public class MainActivity extends Activity implements OnItemClickListener, OnDismissListener {    private AlertView mAlertView;//避免创建重复View,先创建View,然后需要的时候show出来,推荐这个做法    private AlertView mAlertViewExt;//窗口拓展例子    private EditText etName;//拓展View内容    private InputMethodManager imm;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);        mAlertView = new AlertView("标题", "内容", "取消", new String[]{"确定"}, null, this, AlertView.Style.Alert, this).setCancelable(true).setOnDismissListener(this);        //拓展窗口        mAlertViewExt = new AlertView("提示", "请完善你的个人资料!", "取消", null, new String[]{"完成"}, this, AlertView.Style.Alert, this);        ViewGroup extView = (ViewGroup) LayoutInflater.from(this).inflate(R.layout.alertext_form,null);        etName = (EditText) extView.findViewById(R.id.etName);        etName.setOnFocusChangeListener(new View.OnFocusChangeListener() {            @Override            public void onFocusChange(View view, boolean focus) {                //输入框出来则往上移动                boolean isOpen=imm.isActive();                mAlertViewExt.setMarginBottom(isOpen&&focus ? 120 :0);                System.out.println(isOpen);            }        });        mAlertViewExt.addExtView(extView);    }    public void alertShow1(View view) {        mAlertView.show();    }    public void alertShow2(View view) {        new AlertView("标题", "内容", null, new String[]{"确定"}, null, this, AlertView.Style.Alert, this).show();    }    public void alertShow3(View view) {        new AlertView(null, null, null, new String[]{"高亮按钮1", "高亮按钮2", "高亮按钮3"},                new String[]{"其他按钮1", "其他按钮2", "其他按钮3", "其他按钮4", "其他按钮5", "其他按钮6",                        "其他按钮7", "其他按钮8", "其他按钮9", "其他按钮10", "其他按钮11", "其他按钮12"},                this, AlertView.Style.Alert, this).show();    }    public void alertShow4(View view) {        new AlertView("标题", null, "取消", new String[]{"高亮按钮1"}, new String[]{"其他按钮1", "其他按钮2", "其他按钮3"}, this, AlertView.Style.ActionSheet, this).show();    }    public void alertShow5(View view) {        new AlertView("标题", "内容", "取消", null, null, this, AlertView.Style.ActionSheet, this).setCancelable(true).show();    }    public void alertShow6(View view) {        new AlertView("上传头像", null, "取消", null,                new String[]{"拍照", "从相册中选择"},                this, AlertView.Style.ActionSheet, this).show();    }    public void alertShowExt(View view) {        mAlertViewExt.show();    }    private void closeKeyboard() {        //关闭软键盘        imm.hideSoftInputFromWindow(etName.getWindowToken(),0);        //恢复位置        mAlertViewExt.setMarginBottom(0);    }    @Override    public void onItemClick(Object o,int position) {        closeKeyboard();        //判断是否是拓展窗口View,而且点击的是非取消按钮        if(o == mAlertViewExt && position != AlertView.CANCELPOSITION){            String name = etName.getText().toString();            if(name.isEmpty()){                Toast.makeText(this, "啥都没填呢", Toast.LENGTH_SHORT).show();            }            else{                Toast.makeText(this, "hello,"+name, Toast.LENGTH_SHORT).show();            }            return;        }        Toast.makeText(this, "点击了第" + position + "个", Toast.LENGTH_SHORT).show();    }    @Override    public void onDismiss(Object o) {        closeKeyboard();        Toast.makeText(this, "消失了", Toast.LENGTH_SHORT).show();    }    @Override    public boolean onKeyDown(int keyCode, KeyEvent event)    {        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0)        {            if(mAlertView!=null && mAlertView.isShowing()){                mAlertView.dismiss();                return false;            }        }        return super.onKeyDown(keyCode, event);    }}

点击下载源码



更多相关文章

  1. android studio 取消自动保存功能(已解决)
  2. Android(安卓)AlertDialog
  3. android两次点击返回键退出和按钮退出对话框
  4. Android双击两次返回按钮退出程序
  5. android 确认对话框实例
  6. android 在标题栏加上按钮
  7. android 按钮按下时改变字体颜色
  8. Android(安卓)常用的ui(单选框 多选框 下拉列表框 拖动条)
  9. android与原生的JS交互

随机推荐

  1. sql*loader问题,我有几万条记录,为什么只
  2. sql2005指定字段插入空格。
  3. 请问图片存到MySQL服务器中的时候如何操
  4. mysql 全表扫描、全索引扫描、索引覆盖(
  5. docker应用-6(mysql+mycat 搭建数据库集群
  6. mysql数据库的主从同步过程详述
  7. mysql参数优化辅助工具之tuning-primer.s
  8. sql 存储过程参数为空则不作为条件
  9. Python3.6实现scrapy框架爬取数据并将数
  10. >的EF6 SQL生成。