亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Android自定義Dialog

系統 1806 0

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


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

先來一張圖吧,很簡單,只有一個Activity,當點擊Button的時候就彈出這個自定義的Dialog

Android自定義Dialog

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

為了照顧到所有的碼農,在些把所有的代碼都貼出來

新建工程在此就不貼出來了,只是為了方便大家的復制粘貼,取包名為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) {
                
                
      
      
        //
      
      
        初始化一個自定義的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
      
      
        >
      
    

  新建一個自定義的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);
    }

}
      
    

相應的布局文件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,我們自定義一個式樣,用來改變默認的Dialog樣式

在values文件夾下新建一個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
      
      
        >
      
    

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

Android自定義Dialog

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

由于水平有限,這些內容基本上都是在網上找的,然后自己整理了一下,寫了一篇相對比較清晰的,如果大家還有什么疑問的話,隨時可以跟我聯系,共同學習。。。

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

不好意思,剛剛實測了一下,發現還有一個很簡單的方法,在不改變前面的布局前提下,只需要修改主類(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一個Dialog對象出來,在實例化的時候傳入主題
      
    
      
        
           Dialog dialog = new Dialog(MyDialogActivity.this, R.style.MyDialog);
        
      
    
      
      
      
        //
      
      設置它的ContentView
    
      
        
          
             dialog.setContentView(R.layout.dialog);
          
        
        

                dialog.show();
            }
        });

    }
}
      
    

Android自定義Dialog


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: aaaa级日本片免费视频 | 国产91精品一区二区视色 | 成人国产在线视频 | 美女福利视频一区二区 | 番茄视频在线观看黄版本免费 | 四虎永久地址4hu2019 | 国产视频最新 | jazzjazz国产精品久久 | 国产亚洲欧美久久久久 | 成人免费毛片视频 | 久久久久久网址 | 久久精品免看国产成 | 天天干狠狠操 | 四虎永久免费地址ww417 | 色黄网站成年女人色毛片 | 天天爱天天色天天干 | 成年女人18级毛片毛片免费观看 | 国产aa免费视频 | 99在线视频免费 | 中文字幕第一页亚洲 | 12至16末成年毛片视频 | 毛片视频播放 | 国产成+人+亚洲+欧美+日韩 | 爱爱小视频免费体验区在线观看 | 午夜综合 | 伊人久久精品成人网 | 亚洲小视频在线 | 久久99精品久久久久久臀蜜桃 | 欧美丰满大乳大屁股毛片 | 久久香蕉网 | 日韩毛片在线看 | 中文字幕伊人久久网 | 日本欧洲95视频 | 99精品中文字幕 | 九九热在线视频免费观看 | 日韩小视频在线播放 | 欧美精品一区二区三区在线播放 | 亚洲欧洲免费视频 | 日本精a在线观看 | 国产欧美一区二区 | 亚洲精品一二三四区 |