• 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="@drawable/arrow_dropdown_pressed"
            android:layout_alignParentRight="true"
            />
    </RelativeLayout>
    

    弹出的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="@drawable/arrow_dropdown_pressed"
            android:layout_alignParentRight="true"
            />
    
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginLeft="12dp"
            android:layout_marginRight="12dp"
            android:layout_marginTop="35dp"
            android:orientation="vertical"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:background="@drawable/topmenu_popup_down">
    
            <Button
                android:layout_width="fill_parent"
                android:layout_height="45dp"
                android:background="@drawable/main_menu_button_background"
                android:layout_margin="@dimen/button_margin_top"
                android:text="aaa"
                />
    
            <Button
                android:layout_width="fill_parent"
                android:layout_height="45dp"
                android:background="@drawable/main_menu_button_background"
                android:layout_margin="@dimen/button_margin_top"
                android:text="bbb"
                />
    
            <Button
                android:layout_width="fill_parent"
                android:layout_height="45dp"
                android:background="@drawable/main_menu_button_background"
                android:layout_margin="@dimen/button_margin_top"
                android:text="ccc"
                />
        </LinearLayout>
    </RelativeLayout>
    

    我们使用

     <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();
                }
            });





  • 相关阅读:
    java学习笔记(2)
    java学习笔记(1)
    python3自用utils(备忘录)
    关于ubuntu环境的一切
    vim中F5编译运行代码
    kafka入门教程
    python中datetime的常用功能
    Hbase实战教程(转)
    根据时间戳(毫秒)计算年龄
    如何在Debian 10上安装Python 3.8
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/6747727.html
Copyright © 2020-2023  润新知