• <kbd id="qyk40"></kbd>
  • <strike id="qyk40"></strike><samp id="qyk40"><pre id="qyk40"></pre></samp>

     

    Android關于自定義的dialog

    (2013-01-15 16:34:34)

    轉載

     

     

     

    標簽:

    it

     

     

     

     首先在布局中寫出你自己想要的dialog的樣式Android關于自定義的dialog

    由于我的圖片需要平鋪            android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:background="@drawable/note_top"
               android:orientation="horizontal" >
           ,自己寫了一個平鋪的方法。所以在布局中看到的樣子反而不正常。在手機上能正常顯示。

     實現平鋪的方法很簡單
     public static void fixBackgroundRepeatY(View view) {   
           Drawable bg = view.getBackground();  
           if (bg != null) {        
                  if (bg instanceof BitmapDrawable) {           
                    BitmapDrawable bmp = (BitmapDrawable) bg;          
                    bmp.mutate(); // make sure that we aren't sharing state anymore
                    bmp.setTileModeXY(null,TileMode.REPEAT);       
                   
          }
    }

     

     接下來就開始寫java代碼了,第一步肯定是extends Dialog

    直接貼代碼

    public class HPDialog extends Dialog {

     // 先調用構造方法在調用oncreate方法

     private static boolean isShow = true;
     private Context context;
     private String mYtitle;
     private String mYmsg;

     // private MyDialog myDialog;

     @Override
     protected void onCreate(Bundle savedInstanceState) {
      // TODO Auto-generated method stub
      super.onCreate(savedInstanceState);
     }

     public HPDialog() {

      super(ClientEngine.getInstance().getBaseActivity());
      this.context = ClientEngine.getInstance().getBaseActivity();
     }

     public HPDialog(Context context, int theme) {
      super(context, theme);
      this.context = context;
     }

     public void setTitle(String title) {
      this.mYtitle = title;
     }

     public void setMsg(String msg) {
      this.mYmsg = msg;
     }
     @Override
     public void show() {
      super.show();
     }
     public static class Builder {

      private Context context;
      private String title;
      private String message;
      private String positiveButtonText;
      private String negativeButtonText;
      private View contentView;
      private DialogInterface.OnClickListener positiveButtonClickListener,
        negativeButtonClickListener;

      // private TextView msg=(TextView)findViewById(R.id.message);
      public Builder(Context context) {
       this.context = context;
      }

      public Builder setMessage(String message) {
       this.message = message;
       return this;
      }

      public Builder setMessage(int message) {
       this.message = (String) context.getText(message);
       return this;
      }

      public Builder setTitle(int title) {
       this.title = (String) context.getText(title);
       return this;
      }

      public Builder setTitle(String title) {
       this.title = title;
       return this;
      }

      public Builder setContentView(View v) {
       this.contentView = v;
       return this;
      }
      
      public Builder setPositiveButton(int positiveButtonText,
        DialogInterface.OnClickListener listener) {
       this.positiveButtonText = (String) context
         .getText(positiveButtonText);
       this.positiveButtonClickListener = listener;
       return this;
      }

      public Builder setPositiveButton(String positiveButtonText,
        DialogInterface.OnClickListener listener) {
       this.positiveButtonText = positiveButtonText;
       this.positiveButtonClickListener = listener;
       return this;
      }
      
      
      public boolean setCancelable(boolean cancelable){
       
       isShow = cancelable;
       return isShow;
      }

      public Builder setNegativeButton(int negativeButtonText,
        DialogInterface.OnClickListener listener) {
       this.negativeButtonText = (String) context
         .getText(negativeButtonText);
       this.negativeButtonClickListener = listener;
       return this;
      }
      
      public Builder setClickFunction(final Command[] commands) {
       if(commands != null)
       {
        if(commands[0]==null){
         this.setPositiveButton("知道了", new OnClickListener() {
          
          @Override
          public void onClick(DialogInterface dialog,
            int which) {

          }
         });
        }else{
         this.setPositiveButton(commands[0].getLabel(), new OnClickListener() {
          
          @Override
          public void onClick(DialogInterface dialog,
            int which) {
           commands[0].onClick();
          }
         });
        }
        if(commands[1]!=null){
         this.setNegativeButton(commands[1].getLabel(), new OnClickListener() {
          
          @Override
          public void onClick(DialogInterface dialog,
            int which) {
           commands[1].onClick();
          }
         });
        }
       }
       return this;
      }

      public Builder setNegativeButton(String negativeButtonText,
        DialogInterface.OnClickListener listener) {
       this.negativeButtonText = negativeButtonText;
       this.negativeButtonClickListener = listener;
       return this;
      }

      public HPDialog show() {
       HPDialog dialog = create();
       dialog.show();
       return dialog;
      }
      
      public HPDialog create() {
       LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
       
       // instantiate the dialog with the custom Theme
       final HPDialog dialog = new HPDialog(context, R.style.HPDialog);
       dialog.setCanceledOnTouchOutside(false);//android 4.0以上dialog點擊其他地方也會消失false以后就只能點擊按鈕消失
       
       View layout = inflater.inflate(R.layout.dialog, null);
       
       ScrollView sv = (ScrollView) layout.findViewById(R.id.HpDialogScrollView);
       
       int width = context.getResources().getDrawable(R.drawable.note_top).getIntrinsicWidth();
       
       
       sv.getLayoutParams().width=width-30;
       
       if(message!=null && message.length()>160){
        
        sv.getLayoutParams().height=MainMenu.screenHeight*2/5;
        
       }
       
       dialog.addContentView(layout, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
       // set the dialog title
       ((TextView)layout.findViewById(R.id.title)).setText(title);
       
       // set the confirm button
       if (positiveButtonText != null) {
        
        ((Button) layout.findViewById(R.id.dialog_button_ok)).setText(positiveButtonText);
        
        if (positiveButtonClickListener != null) {
         
         ((Button) layout.findViewById(R.id.dialog_button_ok)).setOnClickListener(new View.OnClickListener() {
          
            public void onClick(View v) {
             
             positiveButtonClickListener.onClick(dialog,DialogInterface.BUTTON_POSITIVE);
             dialog.dismiss();
            }
           });
        }
       } else {
        
        // if no confirm button just set the visibility to GONE
        layout.findViewById(R.id.dialog_button_ok).setVisibility(View.GONE);
       }
       if (negativeButtonText != null) {
        
        ((Button) layout.findViewById(R.id.dialog_button_cancel)).setText(negativeButtonText);
        if (negativeButtonClickListener != null) {
         
         
    //     ((Button) layout.findViewById(R.id.dialog_button_ok)).
         
         ((Button) layout.findViewById(R.id.dialog_button_cancel)).setOnClickListener(new View.OnClickListener() {
          
            public void onClick(View v) {
             
             negativeButtonClickListener.onClick(dialog, DialogInterface.BUTTON_NEGATIVE);
             
             dialog.dismiss();
            }
           });
        }
       } else {
        
        LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) ((Button) layout.findViewById(R.id.dialog_button_ok)).getLayoutParams();
       
        params.setMargins(30, 0, 30, 0);//這個只是根據我自己的需要調節(jié)按鈕的位置。大家可以根據自己的需要來調節(jié)
        params.width = width-60;
        ((Button) layout.findViewById(R.id.dialog_button_ok)).setLayoutParams(params);
        
        // if no confirm button just set the visibility to GONE
        layout.findViewById(R.id.dialog_button_cancel).setVisibility(View.GONE);
       }
       
       // set the cancel button

       // set the content message
       
       if (message != null) {
        
        ((TextView) layout.findViewById(R.id.msg)).setText(message);
        
       } else if (contentView != null) {
        
        // if no message set
        // add the contentView to the dialog body
        
        ((LinearLayout) layout.findViewById(R.id.body)).removeAllViews();
        
        ((LinearLayout) layout.findViewById(R.id.body)).addView(
          contentView, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
       }
       dialog.setContentView(layout);
       return dialog;
      }
     }
    }

     

    這樣一個自定義的dialog就搞定了。用法和系統(tǒng)的一樣。只是換了個顯示樣式

     

    穩(wěn)定

    產品高可用性高并發(fā)

    貼心

    項目群及時溝通

    專業(yè)

    產品經理1v1支持

    快速

    MVP模式小步快跑

    承諾

    我們選擇聲譽

    堅持

    10年專注高端品質開發(fā)
    • 返回頂部
    一本色道久久88综合日韩精品| 国产精品臀控福利在线观看| 国产精品自在拍一区二区不卡 | 久久精品无码一区二区无码 | 国产乱人伦偷精品视频免| 久久99精品久久久久久hb无码| 国产精品天天看天天狠| 中文字幕乱码中文乱码51精品| 久久93精品国产91久久综合| 亚洲精品无码你懂的网站| 伊人天堂av无码av日韩av| 日韩av在线播放| 日韩午夜在线观看| 国产伦精品一区二区三区四区| 青青青国产精品手机在线观看| 久久精品国产99久久久| 国内精品自线在拍2020不卡| 95在线观看精品视频| 久久精品无码一区二区WWW| 91在线老王精品免费播放| 久久精品国产亚洲AV无码偷窥| 日韩精品内射视频免费观看| 久久一区二区精品| 无码人妻精品一区二区三区夜夜嗨| 国产精品国产三级国产av品爱网| 久久91精品久久91综合| 老司机99精品99| 久久亚洲精品成人777大小说| 亚洲AV无码久久精品成人| 久久96国产精品久久久| 国内精品一级毛片免费看| 久久亚洲国产精品一区二区| 国产精品人成在线播放新网站| 国产成人精品电影在线观看 | 99视频精品全国在线观看| 小辣椒福利视频精品导航| 人妻精品久久久久中文字幕69 | 亚洲高清日韩精品第一区| 无码日韩精品一区二区人妻| 日韩无码系列综合区| 日韩在线天堂免费观看|