日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Android自定義Dialog

系統(tǒng) 2087 0

Android自定義Dialog - And.He - 博客園 http://www.cnblogs.com/and_he/archive/2011/09/16/2178716.html


這段時(shí)間在做一個(gè)項(xiàng)目,需要使用到自定義Dialog,先在網(wǎng)上找了一下資料,發(fā)現(xiàn)還是有很多沒有講清楚的,在此給出一個(gè)Demo,一來可以方便廣大碼農(nóng),二來也可以方便自己,以備不時(shí)之需。。。

先來一張圖吧,很簡(jiǎn)單,只有一個(gè)Activity,當(dāng)點(diǎn)擊Button的時(shí)候就彈出這個(gè)自定義的Dialog

Android自定義Dialog

里面的幾張圖都比較丑,我不多會(huì)美工,隨便用powerpoint畫了幾張圖,原理是一樣的,先不計(jì)較這些。下面正入正題

為了照顧到所有的碼農(nóng),在些把所有的代碼都貼出來

新建工程在此就不貼出來了,只是為了方便大家的復(fù)制粘貼,取包名為com.and.mydialog,主Activity取名為MyDialogActivity

      
        package
      
      
         com.and.mydialog;


      
      
        import
      
      
         android.app.Activity;

      
      
        import
      
      
         android.app.AlertDialog;

      
      
        import
      
      
         android.app.Dialog;

      
      
        import
      
      
         android.content.DialogInterface;

      
      
        import
      
      
         android.os.Bundle;

      
      
        import
      
      
         android.view.KeyEvent;

      
      
        import
      
      
         android.view.LayoutInflater;

      
      
        import
      
      
         android.view.Menu;

      
      
        import
      
      
         android.view.MenuItem;

      
      
        import
      
      
         android.view.View;

      
      
        import
      
      
         android.view.View.OnClickListener;

      
      
        import
      
      
         android.widget.Button;

      
      
        import
      
      
         android.widget.Toast;


      
      
        public
      
      
      
      
        class
      
      
         MyDialogActivity 
      
      
        extends
      
      
         Activity {
    
      
      
        /**
      
      
         Called when the activity is first created. 
      
      
        */
      
      
        
    @Override
    
      
      
        public
      
      
      
      
        void
      
      
         onCreate(Bundle savedInstanceState) {
        
      
      
        super
      
      
        .onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button button 
      
      
        =
      
      
         (Button) findViewById(R.id.button1);
        button.setOnClickListener(
      
      
        new
      
      
         OnClickListener() {

            @Override
            
      
      
        public
      
      
      
      
        void
      
      
         onClick(View v) {
                
                
      
      
        //
      
      
        初始化一個(gè)自定義的Dialog
      
      
      
      
        
           Dialog dialog = new MyDialog(MyDialogActivity.this
        
      
      
        
          
            ,
          
          
             R.style.MyDialog);
          
        
        

                dialog.show();
            }
        });

    }
}
      
    

  主布局文件main.xml

      
        <?
      
      
        xml version="1.0" encoding="utf-8"
      
      
        ?>
      
      
      
      
        <
      
      
        LinearLayout 
      
      
        xmlns:android
      
      
        ="http://schemas.android.com/apk/res/android"
      
      
        
    android:orientation
      
      
        ="vertical"
      
      
         android:layout_width
      
      
        ="fill_parent"
      
      
        
    android:layout_height
      
      
        ="fill_parent"
      
      
        >
      
      
      
      
        <
      
      
        Button 
        
      
      
        android:text
      
      
        ="顯示自定義Dialog"
      
      
         
        android:id
      
      
        ="@+id/button1"
      
      
        
        android:layout_height
      
      
        ="wrap_content"
      
      
         
        android:layout_width
      
      
        ="fill_parent"
      
      
        />
      
      
      
      
        </
      
      
        LinearLayout
      
      
        >
      
    

  新建一個(gè)自定義的Dialog類,取名MyDialog,繼承自Dialog

      
        package
      
      
         com.and.mydialog;


      
      
        import
      
      
         android.app.Dialog;

      
      
        import
      
      
         android.content.Context;

      
      
        import
      
      
         android.os.Bundle;

      
      
        import
      
      
         android.view.LayoutInflater;

      
      
        import
      
      
         android.view.View;


      
      
        public
      
      
      
      
        class
      
      
         MyDialog 
      
      
        extends
      
      
        
          
             Dialog
          
        
         {

    Context context;
    
      
      
        public
      
      
         MyDialog(Context context) {
        
      
      
        super
      
      
        (context);
        
      
      
        //
      
      
         TODO Auto-generated constructor stub
      
      
      
      
      
      
        this
      
      
        .context 
      
      
        =
      
      
         context;
    }
    
      
      
        
          public MyDialog(Context context, int theme){ super(context, theme); this.context =
        
      
      
        
          
             context;
          
          
             }
          
        
        
    @Override
    
      
      
        protected
      
      
      
      
        void
      
      
         onCreate(Bundle savedInstanceState) {
        
      
      
        //
      
      
         TODO Auto-generated method stub
      
      
      
      
      
      
        super
      
      
        .onCreate(savedInstanceState);
        
      
      
        this
      
      
        .setContentView(R.layout.dialog);
    }

}
      
    

相應(yīng)的布局文件dialog.xml

      
        <?
      
      
        xml version="1.0" encoding="utf-8"
      
      
        ?>
      
      
      
      
        <
      
      
        LinearLayout 
      
      
        xmlns:android
      
      
        ="http://schemas.android.com/apk/res/android"
      
      
        
    android:orientation
      
      
        ="vertical"
      
      
        
    android:layout_width
      
      
        ="wrap_content"
      
      
        
    android:layout_height
      
      
        ="wrap_content"
      
      
        
    android:gravity
      
      
        ="center_vertical|center_horizontal"
      
      
        
    android:background
      
      
        ="@drawable/dialog_bg"
      
      
        >
      
      
      
      
        <
      
      
        RelativeLayout 
        
      
      
        android:layout_width
      
      
        ="fill_parent"
      
      
        
        android:layout_height
      
      
        ="wrap_content"
      
      
        
        android:paddingLeft
      
      
        ="30dip"
      
      
        
        android:paddingTop
      
      
        ="10dip"
      
      
        >
      
      
      
      
        <
      
      
        ImageView 
            
      
      
        android:id
      
      
        ="@+id/dialog_title_image"
      
      
        
            android:layout_alignParentLeft
      
      
        ="true"
      
      
        
            android:layout_width
      
      
        ="wrap_content"
      
      
        
            android:layout_height
      
      
        ="wrap_content"
      
      
        
            android:background
      
      
        ="@drawable/dialog_title_image"
      
      
        />
      
      
      
      
        <
      
      
        TextView 
            
      
      
        android:layout_width
      
      
        ="wrap_content"
      
      
        
            android:layout_height
      
      
        ="wrap_content"
      
      
        
            android:layout_marginLeft
      
      
        ="10dip"
      
      
        
            android:layout_centerInParent
      
      
        ="true"
      
      
        
            android:text
      
      
        ="Title"
      
      
        
            android:layout_toRightOf
      
      
        ="@id/dialog_title_image"
      
      
        
            android:textColor
      
      
        ="#000000"
      
      
        
            android:textSize
      
      
        ="30sp"
      
      
        />
      
      
      
      
        </
      
      
        RelativeLayout
      
      
        >
      
      
      
      
        
          <
        
        
          TextView 
        
        
          android:layout_width
        
        
          ="fill_parent"
        
        
           android:layout_height
        
        
          ="1dip"
        
        
           android:background
        
        
          ="@drawable/lins"
        
        
           android:layout_marginTop
        
        
          ="5dip"
        
        
          />
        
      
      
      
      
        <
      
      
        TextView 
        
      
      
        android:layout_width
      
      
        ="fill_parent"
      
      
        
        android:layout_height
      
      
        ="wrap_content"
      
      
        
        android:text
      
      
        ="This is a custom dialog"
      
      
        
        android:textColor
      
      
        ="#000000"
      
      
        
        android:layout_marginTop
      
      
        ="10dip"
      
      
        
        android:layout_marginLeft
      
      
        ="30dip"
      
      
        />
      
      
      
      
        <
      
      
        RelativeLayout 
        
      
      
        android:layout_width
      
      
        ="fill_parent"
      
      
        
        android:layout_height
      
      
        ="wrap_content"
      
      
        
        android:paddingTop
      
      
        ="10dip"
      
      
        
        android:gravity
      
      
        ="bottom|center_horizontal"
      
      
        
        android:paddingBottom
      
      
        ="10dip"
      
      
        >
      
      
      
      
        <
      
      
        Button 
            
      
      
        android:id
      
      
        ="@+id/dialog_button_cancel"
      
      
        
            android:layout_alignParentLeft
      
      
        ="true"
      
      
        
            android:layout_width
      
      
        ="100dip"
      
      
        
            android:layout_height
      
      
        ="wrap_content"
      
      
        
            android:text
      
      
        ="確定"
      
      
        />
      
      
      
      
        <
      
      
        Button 
            
      
      
        android:id
      
      
        ="@+id/dialog_button_ok"
      
      
        
            android:layout_width
      
      
        ="100dip"
      
      
        
            android:layout_height
      
      
        ="wrap_content"
      
      
        
            android:layout_toRightOf
      
      
        ="@id/dialog_button_cancel"
      
      
        
            android:layout_marginLeft
      
      
        ="35dip"
      
      
        
            android:text
      
      
        ="取消"
      
      
        />
      
      
      
      
        </
      
      
        RelativeLayout
      
      
        >
      
      
      
      
        </
      
      
        LinearLayout
      
      
        >
      
    

  最主要的,是自定義的Style,我們自定義一個(gè)式樣,用來改變默認(rèn)的Dialog樣式

在values文件夾下新建一個(gè)styles.xml文件,如下。。。

      
        <?
      
      
        xml version="1.0" encoding="utf-8"
      
      
        ?>
      
      
      
      
        <
      
      
        resources
      
      
        >
      
      
      
      
        <
      
      
        style 
      
      
        name
      
      
        ="MyDialog"
      
      
        
           parent
        
        
          ="@android:Theme.Dialog"
        
      
      
        >
      
      
      
      
        
          <item name="android:windowFrame">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowBackground">@drawable/dialog_bg</item> <item name="android:windowIsFloating">true</item> <item name="android:windowContentOverlay">@null</item>
        
      
      
      
      
        </
      
      
        style
      
      
        >
      
      
      
      
        </
      
      
        resources
      
      
        >
      
    

  這樣應(yīng)該就OK了,為了方便大家測(cè)試本示例,在此一并附上不怎么好看的素材。。。

Android自定義Dialog

 注意,這里有三張圖片,第三張圖片是一條線,在自定義的式樣的時(shí)候取消了標(biāo)題欄,為了美觀,添加此線條,看上去還是有標(biāo)題欄的感覺。。。在此基本上完成了。

由于水平有限,這些內(nèi)容基本上都是在網(wǎng)上找的,然后自己整理了一下,寫了一篇相對(duì)比較清晰的,如果大家還有什么疑問的話,隨時(shí)可以跟我聯(lián)系,共同學(xué)習(xí)。。。

———————————————————————————憂傷的分割線——————————————————————————

不好意思,剛剛實(shí)測(cè)了一下,發(fā)現(xiàn)還有一個(gè)很簡(jiǎn)單的方法,在不改變前面的布局前提下,只需要修改主類(MyDialogActivity.java)

      
        package
      
      
         com.and.mydialog;


      
      
        import
      
      
         android.app.Activity;

      
      
        import
      
      
         android.app.AlertDialog;

      
      
        import
      
      
         android.app.Dialog;

      
      
        import
      
      
         android.content.DialogInterface;

      
      
        import
      
      
         android.os.Bundle;

      
      
        import
      
      
         android.view.KeyEvent;

      
      
        import
      
      
         android.view.LayoutInflater;

      
      
        import
      
      
         android.view.Menu;

      
      
        import
      
      
         android.view.MenuItem;

      
      
        import
      
      
         android.view.View;

      
      
        import
      
      
         android.view.View.OnClickListener;

      
      
        import
      
      
         android.widget.Button;

      
      
        import
      
      
         android.widget.Toast;


      
      
        public
      
      
      
      
        class
      
      
         MyDialogActivity 
      
      
        extends
      
      
         Activity {
    
      
      
        /**
      
      
         Called when the activity is first created. 
      
      
        */
      
      
        
    @Override
    
      
      
        public
      
      
      
      
        void
      
      
         onCreate(Bundle savedInstanceState) {
        
      
      
        super
      
      
        .onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button button 
      
      
        =
      
      
         (Button) findViewById(R.id.button1);
        button.setOnClickListener(
      
      
        new
      
      
         OnClickListener() {

            @Override
            
      
      
        public
      
      
      
      
        void
      
      
         onClick(View v) {


      
      
        //
      
      
                        Dialog dialog = new MyDialog(MyDialogActivity.this,

      
      
        //
      
      
                                R.style.MyDialog);
      
    
      
                        //此處直接new一個(gè)Dialog對(duì)象出來,在實(shí)例化的時(shí)候傳入主題
      
    
      
        
           Dialog dialog = new Dialog(MyDialogActivity.this, R.style.MyDialog);
        
      
    
      
      
      
        //
      
      設(shè)置它的ContentView
    
      
        
          
             dialog.setContentView(R.layout.dialog);
          
        
        

                dialog.show();
            }
        });

    }
}
      
    

Android自定義Dialog


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 土默特左旗| 响水县| 常德市| 夏河县| 富顺县| 普陀区| 洱源县| 和政县| 彰化县| 通化县| 巴林右旗| 高尔夫| 贵州省| 宁乡县| 阜平县| 兰坪| 利川市| 体育| 开鲁县| 长子县| 奉新县| 同心县| 仙游县| 肇庆市| 台东县| 苏尼特右旗| 青田县| 湘阴县| 湘潭市| 怀宁县| 新闻| 连江县| 巴里| 德保县| 水富县| 太保市| 上杭县| 浮山县| 都江堰市| 古丈县| 四子王旗|