真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么在Android應(yīng)用中自定義dialog

這篇文章將為大家詳細(xì)講解有關(guān)怎么在Android應(yīng)用中自定義dialog,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序定制開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了武陵免費(fèi)建站歡迎大家使用!

Android 自定義dialog

要點(diǎn):

1、設(shè)置自定義dialog的布局文件my_dialog.xml
2、設(shè)置一份自定義的樣式文件styles_wx.xml,該文件用于覆蓋Android的默認(rèn)主題樣式,如黑色邊框等。
3、Java代碼繼承Dialog實(shí)現(xiàn)自定義類MyDialog,實(shí)現(xiàn)自定義布局,還有設(shè)置窗口的大小、位置等。

代碼

Part1.styles_wx.xml

 
 
 
   
   
    @null  
    true  
    false  
    true  
    @drawable/transparent  
    true  
   
 

注意,此處:

@drawable/transparent

這是設(shè)置對(duì)話框彈出背景,嘗試設(shè)置@null,仍然是黑色背景,在使用半透明圖片時(shí)會(huì)受其影響。

所以,可以在這里指定你想要的背景圖片或者顏色。

我為了靈活性,我設(shè)置該屬性為名為"transparent"的圖片,這是一張1*1的透明圖片。這樣背景完全透明,真正使用的背景在my_dialog.xml里定義

Part2.my_dialog.xml

 
 
 
   
 
 
   
 
   
 
   
 
   
 
   
   
 
   
 
     
 
     
   
 

Part3.MyDialog.java

package com.kwws; 
 
import android.app.Dialog; 
import android.content.Context; 
import android.os.Bundle; 
import android.util.DisplayMetrics; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.Window; 
import android.view.WindowManager; 
import android.widget.RelativeLayout; 
import android.widget.TextView; 
 
import com.navigator.R; 
 
/** 
 * 自定義對(duì)話框 
 * 
 * @author Kangwei 
 * 
 */ 
public class MyDialog extends Dialog { 
 
  /* 屬性 */ 
 
  // 數(shù)據(jù) 
  String title = "title"; 
  String text = "text"; 
  String cancelButtonText = "cancel"; 
  String okButtonText = "ok"; 
  int okColor = -1; 
  int cancelColor = -1; 
 
  // UI 
  Context mContent; 
  TextView tvTitle; 
  TextView tvSeparator; 
  TextView tvText; 
  TextView tvBtn1; 
  TextView tvBtn2; 
  RelativeLayout childViewWrapper;// 子組件容器 
 
  /** 
   * 設(shè)置對(duì)話框樣式,設(shè)置null則不顯示 
   * 
   * @param context 
   *      上下文 
   * @param title 
   *      標(biāo)題 
   * @param text 
   *      文本 
   * @param cancelButtonText 
   *      取消按鈕文本 
   * @param okButtonText 
   *      確認(rèn)按鈕文本 
   */ 
  public MyDialog(Context context, String title, String text, 
      String cancelButtonText, String okButtonText) { 
    super(context, R.style.wx_dialog);// 樣式定義,該樣式去除android默認(rèn)的黑色背景邊框等。 
    this.mContent = context; 
    setDialogStyle(title, text, cancelButtonText, okButtonText); 
  } 
 
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    LayoutInflater layout = LayoutInflater.from(mContent); 
    View view = layout.inflate(R.layout.my_dialog, null); 
    setContentView(view); 
    findView(); 
    initView(); 
    initViewEvent(); 
  } 
 
  private void setDialogStyle(String title, String text, 
      String cancelButtonText, String okButtonText) { 
    this.title = title; 
    this.text = text; 
    this.cancelButtonText = cancelButtonText; 
    this.okButtonText = okButtonText; 
  } 
 
  private void findView() { 
    tvTitle = (TextView) findViewById(R.id.tvTitle); 
    tvSeparator = (TextView) findViewById(R.id.tvSeparator); 
    tvText = (TextView) findViewById(R.id.tvText); 
    tvBtn1 = (TextView) findViewById(R.id.tvButton1); 
    tvBtn2 = (TextView) findViewById(R.id.tvButton2); 
    childViewWrapper = (RelativeLayout) findViewById(R.id.rlContent); 
  } 
 
  private void initView() { 
    if (title == null) { 
      tvTitle.setVisibility(View.GONE); 
      tvSeparator.setVisibility(View.GONE); 
    } else { 
      tvTitle.setVisibility(View.VISIBLE); 
      tvSeparator.setVisibility(View.VISIBLE); 
      tvTitle.setText(title); 
    } 
    if (text == null) { 
      tvText.setVisibility(View.GONE); 
    } else { 
      tvText.setVisibility(View.VISIBLE); 
      tvText.setText(text); 
    } 
    if (cancelButtonText == null) { 
      tvBtn1.setVisibility(View.GONE); 
    } else { 
      tvBtn1.setVisibility(View.VISIBLE); 
      tvBtn1.setText(cancelButtonText); 
      if (cancelColor != -1) { 
        tvBtn1.setTextColor(cancelColor); 
      } 
    } 
    if (okButtonText == null) { 
      tvBtn2.setVisibility(View.GONE); 
    } else { 
      tvBtn2.setVisibility(View.VISIBLE); 
      tvBtn2.setText(okButtonText); 
      if (okColor != -1) { 
        tvBtn2.setTextColor(okColor); 
      } 
    } 
 
    if (childViewWrapper != null && childView != null) { 
      childViewWrapper.addView(childView); 
    } 
 
    // 設(shè)置對(duì)話框大小 
    Window dialogWindow = getWindow(); 
    WindowManager.LayoutParams lp = dialogWindow.getAttributes(); 
    DisplayMetrics d = mContent.getResources().getDisplayMetrics(); 
    // 獲取屏幕寬、高用 
    lp.width = (int) (d.widthPixels * 0.8); // 高度設(shè)置為屏幕的0.8 
    dialogWindow.setAttributes(lp); 
  } 
 
  private void initViewEvent() { 
    View.OnClickListener listener = new View.OnClickListener() { 
 
      @Override 
      public void onClick(View v) { 
        // TODO Auto-generated method stub 
        switch (v.getId()) { 
        case R.id.tvButton1: 
          if (mListener != null) { 
            mListener.onCancelButtonClick(MyDialog.this, v); 
          } 
          break; 
        case R.id.tvButton2: 
          if (mListener != null) { 
            mListener.onOKButtonClick(MyDialog.this, v); 
          } 
          break; 
        default: 
          break; 
        } 
      } 
    }; 
    tvBtn1.setOnClickListener(listener); 
    tvBtn2.setOnClickListener(listener); 
  } 
 
  public interface OnDialogButtonClickListener { 
    void onCancelButtonClick(MyDialog dialog, View view); 
 
    void onOKButtonClick(MyDialog dialog, View view); 
  } 
 
  private OnDialogButtonClickListener mListener; 
 
  /** 
   * 對(duì)話框按鈕監(jiān)聽 
   * 
   * @param listener 
   */ 
  public void setOnDialogButtonClickListener( 
      OnDialogButtonClickListener listener) { 
    this.mListener = listener; 
  } 
 
  /** 
   * 確定按鈕文本顏色 
   * 
   * @param color 
   */ 
  public void setOKButtonTextColor(int color) { 
    this.okColor = color; 
  } 
 
  /** 
   * 取消按鈕文本顏色 
   * 
   * @param color 
   */ 
  public void setCancelButtonTextColor(int color) { 
    this.cancelColor = color; 
  } 
 
  View childView; 
 
  /** 
   * 在對(duì)話框顯示自定義視圖 
   */ 
  public void setChildView(View view) { 
    childView = view; 
  } 
}

Part4.使用

// 退出提示框 
public void exitDialog() { 
 
  MyDialog dialog = new MyDialog(this, "提示", "確認(rèn)退出?", "取消", "退出"); 
  dialog.setOKButtonTextColor(getResources().getColor(R.color.red)); 
  dialog.setOnDialogButtonClickListener(new OnDialogButtonClickListener() { 
 
    @Override 
    public void onOKButtonClick(MyDialog dialog, View view) { 
      finish(); 
    } 
 
    @Override 
    public void onCancelButtonClick(MyDialog dialog, View view) { 
      dialog.dismiss(); 
    } 
  }); 
  dialog.show(); 
}
/* 
   * 顯示配置對(duì)話框 
   */ 
  private void showConfigDialog() { 
    // 讀取參數(shù) 
    final SharedPreferencesHelper helper = new SharedPreferencesHelper( 
        this, "config"); 
    final String ip = helper.getValue("serverip"); 
    final String port = helper.getValue("serverport"); 
 
    // 配置界面 輸入IP和端口的簡(jiǎn)單界面,這里就不附xml了 
    View view = getLayoutInflater().inflate(R.layout.dialog_config, null); 
    final EditText etIP = (EditText) view.findViewById(R.id.etIP); 
    final EditText etPort = (EditText) view.findViewById(R.id.etPort); 
    etIP.setText(ip != null ? ip : Ksoap2Helper.getServerIP()); 
    etPort.setText(port != null ? port : String.valueOf(Ksoap2Helper 
        .getServerPort())); 
 
    // 配置對(duì)話框 
    MyDialog dialog = new MyDialog(this, "參數(shù)配置", null, "取消", "確定"); 
    // 添加配置界面到對(duì)話框 
    dialog.setChildView(view); 
    // 按鈕監(jiān)聽 
    dialog.setOnDialogButtonClickListener(new OnDialogButtonClickListener() { 
 
      @Override 
      public void onOKButtonClick(MyDialog dialog, View view) { 
        // 保存配置 
        String newIP = etIP.getText().toString(); 
        String newPort = etPort.getText().toString(); 
 
        if (true) { 
          helper.putValue("serverip", newIP); 
          Ksoap2Helper.setServerIP(newIP); 
        } 
        if (true) { 
          helper.putValue("serverport", newPort); 
          Ksoap2Helper.setServerPort(Integer.valueOf(newPort)); 
        } 
        dialog.dismiss(); 
      } 
 
      @Override 
      public void onCancelButtonClick(MyDialog dialog, View view) { 
        dialog.dismiss(); 
      } 
    }); 
    dialog.show(); 
  }

關(guān)于怎么在Android應(yīng)用中自定義dialog就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。


分享題目:怎么在Android應(yīng)用中自定義dialog
網(wǎng)頁鏈接:http://weahome.cn/article/jjggod.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部