• <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);//這個只是根據我自己的需要調節按鈕的位置。大家可以根據自己的需要來調節
        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就搞定了。用法和系統的一樣。只是換了個顯示樣式

     

    穩定

    產品高可用性高并發

    貼心

    項目群及時溝通

    專業

    產品經理1v1支持

    快速

    MVP模式小步快跑

    承諾

    我們選擇聲譽

    堅持

    10年專注高端品質開發
    • 返回頂部
    久久er热视频在这里精品| 2021午夜国产精品福利| 国内精品自在自线视频| 国内精品久久久久久久久电影网| 好吊操这里只有精品| 亚洲AV无码久久精品狠狠爱浪潮| 国产精品成人一区二区三区| 亚洲av日韩av天堂影片精品| 日韩专区在线观看| 国产乱码精品一区二区三区中 | 国产午夜亚洲精品| 亚洲精品无码成人AAA片| 免费国内精品久久久久影院| 久久精品国产亚洲精品2020| 高清在线亚洲精品国产二区| 亚洲日韩精品无码专区加勒比 | 亚洲国产精品无码久久SM| 亚洲日韩乱码中文字幕| 久久乐国产综合亚洲精品| 精品福利资源在线| 日韩一区二区三区在线精品| 精品国产夜色在线| 亚洲AV无码国产精品色| 精品一区二区久久久久久久网站| 日韩毛片基地一区二区三区| 亚洲AV永久无码精品网站在线观看| 国产精品视频一区二区三区无码| 老湿机一区午夜精品免费福利| 麻豆精品国产免费观看 | 国产精品露脸国语对白河北| 69精品久久久久| 久久久久亚洲精品成人网小说| 精品无人区无码乱码毛片国产 | 精品久久精品久久| 国产精品天天看大片特色视频 | 九九99久久精品国产| 91freevideos精品| 亚洲国产成人精品无码区在线观看| 亚洲国产小视频精品久久久三级 | 久久精品国产成人AV| 在线精品国产一区二区三区|