纸上得来终觉浅,绝知此事要躬行。

 

重写Android系统自带Dialog

Context context = EditUserInfoTabActivity.this;
/*
 * R.style.edit_AlertDialog_style 是我们重新定义的系统自带Dialog的样式
 */
Dialog dia = new Dialog(context,R.style.edit_AlertDialog_style);
/*
 * R.layout.manage_username_dialog是一个XML布局文件
 */
dia.setContentView(R.layout.manage_username_dialog);
dia.show();
// 以下是控制弹出Dialog的位置
Window w=dia.getWindow();
WindowManager.LayoutParams lp =w.getAttributes();
lp.x=0;
lp.y=-307;
dia.onWindowAttributesChanged(lp);

设置弹出位置必须在Dialog Show之后。

Dialog样式的代码如下:

<style name="edit_AlertDialog_style" parent="@android:style/Theme.Dialog">
    <item name="android:windowFrame">@null</item><!--边框-->
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowNoTitle">true</item> <!--是否启用标题栏-->
    <item name="android:background">@drawable/edit_dialog_bg</item>
    <item name="android:windowBackground">@color/transparent</item>
    <item name="android:backgroundDimEnabled">true</item> <!--是否使用背景半透明-->
</style>

android:windowBackground:

<color name="transparent">#00000000</color>

自定义的布局代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" 
    android:background="@drawable/edit_dialog_bg">
    
    <TextView 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="修改名称"
        android:textColor="#ffffff"
        android:textSize="25dp"
        android:gravity="center"
        android:layout_gravity="center"
        android:layout_marginTop="15dp"
        android:layout_marginBottom="15dp"/>
    <EditText 
        android:id="@+id/edit_dialog_input"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/edit_dialog_input_username"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"/>
    <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="15dp"
        android:layout_marginBottom="15dp"
        android:orientation="horizontal">
        <Button 
            android:id="@+id/edit_dialog_username_ok"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="确定"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="5dp"
            android:textSize="20dp"
            android:textColor="#666666"
            android:background="@drawable/edit_dialog_btn_bg"/>
        <Button 
            android:id="@+id/edit_dialog_username_cancel"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="取消"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="10dp"
            android:textSize="20dp"
            android:textColor="#666666"
            android:background="@drawable/edit_dialog_btn_bg"/>
    </LinearLayout>

</LinearLayout>

效果图如下:

posted on 2012-08-30 14:34  JRoger  阅读(8131)  评论(2编辑  收藏  举报

导航