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

android如何写一个自定义的dialog可以在Title的位置弹出来,布布扣,bubuko.com

时间: 2024-12-24 05:28:27

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

写一个自定义进度颜色和圆形转动的ProgressBar(详细介绍)

先上图: 我们得自定义ProgressBar的样式 <span style="white-space:pre"> </span><style name="self_define_ProgressBar" parent="@android:style/Widget.ProgressBar.Horizontal"> //继承了android横向的ProgressBar的样式 <item name="

使用IntentService给自己的Android应用写一个文件下载器。

接着上一篇的http://www.cnblogs.com/zhengxt/p/3657833.html,当我们想给自己的APP写一个文件下载器时,可以用重写IntentService来实现. 使用IntentService有几个好处,IntentService继承于Service,适合拿来处理一些耗时又不需要去管它的任务.把要执行的任务用Intent加入到队列中,IntentService会有一个工作线程来取出队列中的Intent来处理.需要实现抽象方法onHandleIntent方法来执行这些

android如何写一个投票或是表达观点的界面

先上图: 把这些表示观点的view放在一个LinearLayout里: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/repost_vote_tag_list" android:layout_width="fill_parent" android:layout_height="wrap_conten

Android学习--写一个发送短信的apk,注意布局文件的处理过程!!!

刚开始写Android程序如图发现使用了findViewById方法之后输出的话居然是null(空指针错误),也就是说这个方法没有成功.网上说这样写是在activity_main .xml去找这个ID所代表的控件,而现在使用的ADT在layout下除了activity_main .xml还多生成了一个fragment_main.xml.我就是把控件写在了后一个布局文件中.想请问下,使用什么样的方法是在fragment_main.xml去寻找控件呢? 回答:在PlaceHolderFragment

android如何写一个循环文字滚动的TextView

效果图: 在layout中这样来声明: <com.kaixin001.view.ScrollText android:id="@+id/news_statustxt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingLeft="10dp" android:paddingRight="1

Android 自己写一个打开图片的Activity

根据记忆中eoe的Intent相关视频,模仿,写一个打开图片的Activity 1.在主Activity的button时间中,通过设置action.category.data打开一个图片.这时代码已经可以运行,将使用系统默认的工具打开图片. Intent intentImage = new Intent(Intent.ACTION_VIEW); intentImage.addCategory(Intent.CATEGORY_DEFAULT); File file = new File("/sto

如果你想深刻理解ASP.NET Core请求处理管道,可以试着写一个自定义的Server

我们在上面对ASP.NET Core默认提供的具有跨平台能力的KestrelServer进行了详细介绍(<聊聊ASP.NET Core默认提供的这个跨平台的服务器——KestrelServer>),为了让读者朋友们对管道中的Server具有更加深刻的认识,接下来我们采用实例演示的形式创建一个自定义的Server.这个自定义的Server直接利用HttpListener来完成针对请求的监听.接收和响应,我们将其命名为HttpListenerServer.在正式介绍HttpListenerServ

如何写一个自定义的js文件

自定义一个Utils.js文件,在其中写js代码即可.如: (function(w){ function Utils(){} Utils.prototype.getChilds = function(_selector){}; Utils.prototype.getNextSibling = function(_selector){}; Utils.prototype.getPrevSibling = function(_selector){}; Utils.prototype.validate

用android去写一个小程序

前言: 软工的一个小作业:实现"黄金分割小游戏", 需要结对编程,队友:陈乐云(http://www.cnblogs.com/clyln/),用时两天. 早期思路设计: 采用键值对的形式,以Map作为存储结构.优点:能够将数据与用户对应,缺点:采用java实现过于复杂,工程量过大,需要消耗大量资源,类型转换容易出错. 后期思路设计: 采用二维数组:第一行用于存储用户输入原始数据,第二行用于存储中间数据(第一行的与G值做差的绝对值),第三行用于保存用户得分. 优点:实现简单,易于运算 分