zoukankan      html  css  js  c++  java
  • Android自定义对话框

    在android中有自带的对话框,为了美观,很多开发者会使用自定义对话框,如下图:

    点击“弹出自定义对话框按钮后”显示如图效果。

    首先要自己定义一个xml文件定义自己对话框的样式:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/background"
        android:orientation="vertical" >
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:orientation="horizontal" >
    
            <ImageView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:src="@drawable/airsign" />
    
            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_weight="3"
                android:gravity="center"
                android:text="请输入密码"
                android:textColor="#FFFFFFFF"
                android:textSize="32px"
                android:textStyle="bold" />
        </LinearLayout>
    
        <EditText
           android:id="@+id/et_pass"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:background="@drawable/tv_background"
            android:paddingLeft="10dp"/>
    
        <LinearLayout
             android:layout_marginTop="10dp"
             android:layout_marginBottom="10dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >
            <Button
                android:id="@+id/btn_ok"
                android:layout_width="wrap_content"
                android:layout_height="40dp"
                style="?android:attr/buttonStyleSmall"
                android:layout_weight="1"
                android:background="@drawable/background"
                android:textColor="#FFFFFFFF"
                android:text="确定"/>
            <Button
                android:id="@+id/btn_delete"
                android:layout_marginLeft="20dp"
                android:layout_width="wrap_content"
                android:layout_height="40dp"
                style="?android:attr/buttonStyleSmall"
                android:layout_weight="1"
                android:textColor="#FFFFFFFF"
                android:background="@drawable/background"
                android:text="取消"/>
        </LinearLayout>
    </LinearLayout>

    mainActivity中:

    public class MainActivity extends Activity {
        private Context context = MainActivity.this;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        public void clickView(View v) {
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            // 创建对话框
            AlertDialog dialog = builder.create();
            // 没有下面这句代码会导致自定义对话框还存在原有的背景
            builder.setView(View.inflate(this, R.layout.auto_dialog, null));
            // 弹出对话框
            dialog.show();
            // 以下两行代码是对话框的EditText点击后不能显示输入法的
            dialog.getWindow().clearFlags(
                    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                            | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
            dialog.getWindow().setSoftInputMode(
                    WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
            // *** 主要就是在这里实现这种效果的.
            // 设置窗口的内容页面,shrew_exit_dialog.xml文件中定义view内容
            Window window = dialog.getWindow();
            window.setContentView(R.layout.auto_dialog);
            EditText et_pass = (EditText) window.findViewById(R.id.et_pass);
            final Button btn_ok = (Button) window.findViewById(R.id.btn_ok);
            final Button btn_delete = (Button) window.findViewById(R.id.btn_delete);
            // 为两个button按钮添加点击的监听事件
            btn_ok.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View arg0) {
                    // TODO Auto-generated method stub
                    Toast.makeText(context, btn_ok.getText(), 0).show();
                }
            });
            btn_delete.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View arg0) {
                    // TODO Auto-generated method stub
                    Toast.makeText(context, btn_delete.getText(), 0).show();
                }
            });
        }
    }
  • 相关阅读:
    C#过滤重复数据,使用泛型
    office2007:您正试图运行的函数包含有宏或需要宏语言支持的内容。而在安装此软件时,您(或您的管理员)选择了不安装宏或控件的支持功能
    InstallShield高级应用获取本机所有的SQL服务
    结对项目
    ActiveMQ 初学1:ActiveMQ 创建连接对象
    【JVM】jstack和dump线程分析(2)
    【JVM】jstack 查询占用最大资源线程|排查死循环等
    【java多线程】volatile 关键字
    1.zookeeper原理解析数据存储之Zookeeper内存结构
    【数据算法】Java实现二叉树存储以及遍历
  • 原文地址:https://www.cnblogs.com/yunfang/p/4933340.html
Copyright © 2011-2022 走看看