国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android 自定義AlertDialog對話框樣式

2019-10-22 18:27:43
字體:
來源:轉載
供稿:網友

實際的項目開發當中,經常需要根據實際的需求來自定義AlertDialog。最近在開發一個WIFI連接的功能,點擊WIFI需要彈出自定義密碼輸入框。在此權當記錄

效果圖

android,自定義,alertdialog

點擊首頁的Button即跳出對話框,顯示WIFI信息(TextView),密碼輸入框(EditText),取消和連接按鈕(Button)

實現

根據自己實際的需求,為AlertDialog創建一個布局,在此我需要定義一個如圖所示的WIFI密碼輸入框,故在 res/layout 目錄下建立一個 dialog_layout.xml 文件。

在該布局中,定義一個TextView顯示wifi名稱,一條分割線,一個EditText用于密碼輸入,以及兩個Button用于取消與連接

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="300dp"  android:layout_height="180dp"  android:orientation="vertical">  <TextView    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:layout_marginTop="15dp"    android:gravity="center"    android:text="WIFI"    android:textSize="18sp" />  <View    android:layout_width="match_parent"    android:layout_height="2dp"    android:layout_marginLeft="20dp"    android:layout_marginRight="20dp"    android:layout_marginTop="10dp"    android:background="#F5F5F5" />  <EditText    android:id="@+id/et_passwd"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:layout_marginLeft="20dp"    android:layout_marginRight="20dp"    android:layout_marginTop="10dp"    android:focusable="true"    android:focusableInTouchMode="true"    android:hint="Password"    android:inputType="numberPassword" />  <LinearLayout    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:layout_marginTop="10dp"    android:orientation="horizontal">    <Button      android:id="@+id/btn_cancel"      android:layout_width="0dp"      android:layout_height="wrap_content"      android:layout_weight="1"      android:background="@null"      android:text="取消"      android:textColor="#1965db"      android:textSize="16sp" />    <Button      android:id="@+id/btn_connect"      android:layout_width="0dp"      android:layout_height="wrap_content"      android:layout_weight="1"      android:background="@null"      android:text="連接"      android:textColor="#1965db"      android:textSize="16sp" />  </LinearLayout></LinearLayout>

新建 WifiDialog.java 繼承 AlertDialog ,并引入剛剛所定義的 dialog_layout.xml 布局,并在這里做我們的邏輯操作

聲明構造方法,傳入 Context

在 onCreate() 中加載布局,獲取 View,為按鈕設置點擊事件

這邊尤其要注意一個問題,在 Dialog 中,定義 EditText 后,在彈出框中點擊 EditText 彈不出鍵盤來進行輸入,故這里要用 this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM) 保證鍵盤能彈出以用來輸入密碼

package com.example.test.dialogtest;import android.app.AlertDialog;import android.content.Context;import android.os.Bundle;import android.text.TextUtils;import android.view.View;import android.view.WindowManager;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;/** * Created by AaronPasi on 2017/9/16. */public class WifiDialog extends AlertDialog implements View.OnClickListener {  EditText mEtPasswd;  Button mBtnCancel, mBtnConnect;  Context mContext;  public WifiDialog(Context context) {    super(context);    mContext = context;  }  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.dialog_layout);    mEtPasswd = (EditText) findViewById(R.id.et_passwd);    //保證EditText能彈出鍵盤    this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);    this.setCancelable(false);    mBtnCancel = (Button) findViewById(R.id.btn_cancel);    mBtnCancel.setOnClickListener(this);    mBtnConnect = (Button) findViewById(R.id.btn_connect);    mBtnConnect.setOnClickListener(this);  }  @Override  public void onClick(View view) {    switch (view.getId()) {      case R.id.btn_cancel:        this.dismiss();        break;      case R.id.btn_connect:        if (TextUtils.isEmpty(mEtPasswd.getText())) {          Toast.makeText(mContext, "密碼不能為空", Toast.LENGTH_SHORT).show();        } else {          this.dismiss();          Toast.makeText(mContext, mEtPasswd.getText().toString(), Toast.LENGTH_SHORT).show();        }        break;      default:        break;    }  }}

調用的話就簡單了,new 一個 WifiDialog對象,并調用 show() 方法即可。這里在 MainActivity 簡單聲明一個 Button,設置點擊事件,彈出對話框。

package com.example.test.dialogtest;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;public class MainActivity extends AppCompatActivity implements View.OnClickListener {  private Button mDialogBtn;  private WifiDialog mDialog;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    mDialogBtn = (Button) findViewById(R.id.btn_dialog);    mDialogBtn.setOnClickListener(this);  }  @Override  public void onClick(View view) {    if (view.getId() == R.id.btn_dialog) {      mDialog = new WifiDialog(this);      mDialog.show();    }  }}

總結

以上所述是小編給大家帶來的Android 自定義AlertDialog對話框,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言!

 


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鹰潭市| 孟州市| 集安市| 正镶白旗| 阳原县| 丰都县| 孙吴县| 黄冈市| 河北省| 永济市| 辽阳市| 柳江县| 桃园市| 衡东县| 股票| 磐石市| 沁源县| 小金县| 太谷县| 正镶白旗| 平舆县| 安泽县| 浮山县| 枝江市| 齐齐哈尔市| 三门峡市| 大悟县| 闻喜县| 文山县| 台湾省| 陈巴尔虎旗| 宣化县| 富锦市| 大丰市| 嘉善县| 无为县| 阿拉善右旗| 乌海市| 乐都县| 太湖县| 开阳县|