首页 > 代码库 > android如何写一个自定义的dialog可以在Title的位置弹出来

android如何写一个自定义的dialog可以在Title的位置弹出来

先上效果图:



Title的Layout为:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="@dimen/title_height"
    android:background="@drawable/bg_top_title"
   >

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Title"
    android:textSize="20sp"
    android:layout_centerInParent="true"/>


    <ImageView
        android:layout_width="@dimen/header_btn_width"
        android:layout_height="wrap_content"
        android:layout_marginTop="14dp"
        android:layout_alignParentTop="true"
        android:paddingLeft="4dp"
        android:id="@+id/right_button"
        android:src=http://www.mamicode.com/"@drawable/arrow_dropdown_pressed">
弹出的dialog的Layout为

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/dropdownBckgrnd"
    android:background="@drawable/bg_pop_up_dimmer"
    >

    <ImageView
        android:layout_width="@dimen/header_btn_width"
        android:layout_height="wrap_content"
        android:layout_marginTop="14dp"
        android:layout_alignParentTop="true"
        android:paddingLeft="4dp"
        android:id="@+id/right_button"
        android:src=http://www.mamicode.com/"@drawable/arrow_dropdown_pressed">
我们使用

 <span style="white-space:pre">	</span>mDialog = new Dialog(context,R.style.customDialog);
        mDialog.setContentView(R.layout.dialog_layout);

<style name="customDialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowNoTitle">true</item> //设置title
        <item name="android:windowBackground">@android:color/transparent</item>  //dialog应该是透明背景
        <item name="android:windowIsFloating">false</item>  //dialog不是悬浮的
        <item name="android:layoutAnimation">@null</item>  //dialog弹出时没有动画
    </style>


然后我们来设置Dialog的其他属性

        mDialog = new Dialog(context,R.style.customDialog);
        mDialog.setContentView(R.layout.dialog_layout);
        mDialog.setCanceledOnTouchOutside(true);
        WindowManager.LayoutParams params = mDialog.getWindow().getAttributes();
        params.gravity = Gravity.TOP;//这个设置使这个dialog从上方弹出来
        params.windowAnimations = 1;

        WindowManager manager = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
        Display display = manager.getDefaultDisplay();
        windowHeight	= display.getHeight();
        windowWidth	= display.getWidth();
        params.width = windowWidth;
        params.height = windowHeight;

        mDialog.findViewById(R.id.right_button).setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                mDialog.dismiss();
            }
        });

        mDialog.findViewById(R.id.dropdownBckgrnd).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mDialog.dismiss();
            }
        });