Android UI控制元件系列:Dialog(對話方塊)
對話方塊是Android中不可或缺的,在使用對話方塊的時候,需要使用AlertDialog.Builder類。當然處理系統預設的對話方塊外,還可以自定義對話方塊,如果對話方塊設定了按鈕,那麼要對其進行事件監聽OnClickListener。
下面的是一個用AlertDialog.Builder類和自定義的對話方塊的例項,當點選確定時,轉移到登陸對話方塊,當輸入使用者名稱和密碼後,轉移到登陸進度對話方塊
這裡的自定義對話方塊是由兩個TextView和兩個EditText組成,也就是那個登入對話方塊,自定義對話方塊的佈局檔案是dialog.xml檔案,見下面
另外呢,使用AlertDialog來建立對話方塊,需要了解一下幾個方法
setTitle();給對話方塊設定標題
setIcon();給對話方塊設定圖示
setMessage();設定對話方塊的提示資訊
setItems();設定對話方塊要顯示的一個list,一般用於顯示幾個命令時
setSingleChoiceItems();設定對話方塊顯示一個單選的List
setMultiChoiceItems();設定對話方塊顯示一系列的核取方塊
setPositiveButton();給對話方塊新增”yes”按鈕
setNegativeButton();給對話方塊新增”no”按鈕
DialogTest.java
package org.hualang.dialog; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; public class DialogTest extends Activity { /** Called when the activity is first created. */ ProgressDialog mydialog; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Dialog dialog=new AlertDialog.Builder(DialogTest.this) .setTitle("登入提示")//設定標題 .setMessage("這裡需要登入")//設定對話方塊顯示內容 .setPositiveButton("確定", //設定確定按鈕 new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //點選確定轉向登入對話方塊 LayoutInflater factory=LayoutInflater.from(DialogTest.this); //得到自定義對話方塊 final View DialogView=factory.inflate(R.layout.dialog, null); //建立對話方塊 AlertDialog dlg=new AlertDialog.Builder(DialogTest.this) .setTitle("登入框") .setView(DialogView)//設定自定義對話方塊樣式 .setPositiveButton("確定", new DialogInterface.OnClickListener() {//設定監聽事件 @Override public void onClick(DialogInterface dialog, int which) { // 輸入完成後點選“確定”開始登入 mydialog=ProgressDialog.show(DialogTest.this, "請稍等...", "正在登入...",true); new Thread() { public void run() { try { sleep(3000); }catch(Exception e) { e.printStackTrace(); }finally { //登入結束,取消mydialog對話方塊 mydialog.dismiss(); } } }.start(); } }).setNegativeButton("取消",//設定取消按鈕 new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //點選取消後退出程式 DialogTest.this.finish(); } }).create();//建立對話方塊 dlg.show();//顯示對話方塊 } }).setNeutralButton("退出", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 點選退出後退出程式 DialogTest.this.finish(); } }).create();//建立按鈕 //顯示對話方塊 dialog.show(); } }
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="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/username" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:text="使用者名稱" android:gravity="left" android:textAppearance="?android:attr/textAppearanceMedium" /> <EditText android:id="@+id/username" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:scrollHorizontally="true" android:autoText="false" android:capitalize="none" android:gravity="fill_horizontal" android:textAppearance="?android:attr/textAppearanceMedium" /> <TextView android:id="@+id/password" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:text="密碼" android:gravity="left" android:textAppearance="?android:attr/textAppearanceMedium" /> <EditText android:id="@+id/password" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:scrollHorizontally="true" android:autoText="false" android:capitalize="none" android:gravity="fill_horizontal" android:password="true" android:textAppearance="?android:attr/textAppearanceMedium" /> </LinearLayout>
執行結果如下:
點選確定後,會跳轉到登陸對話方塊,這個登入對話方塊是自定義的對話方塊
輸入使用者名稱和密碼後,點選確定後,進入帶進度條的對話方塊中,這裡的帶進度條的對話方塊是系統預設的,並且用現成控制,3秒後就結束該對話方塊,並跳轉到相應的Activity中
補充內容:
1、Inflater英文意思是膨脹,在android中是擴充套件的意思。
LayoutInflater的作用類似於 findViewById(),不同點是LayoutInflater是用來找layout資料夾下的xml佈局檔案,並且例項化!而 findViewById()是找具體某一個xml下的具體 widget控制元件(如:Button,TextView等)。 它可以有很多地方可以使用,如BaseAdapter的getView中,自定義Dialog中取得view中的元件widget等等。
2、AlertDialog.Builder是警告對話方塊的意思
3、單位
px:是螢幕的畫素點
in:英寸
mm:毫米
pt:磅,1/72 英寸
dp:一個基於density的抽象單位,如果一個160dpi的螢幕,1dp=1px
dip:等同於dp
sp:同dp相似,但還會根據使用者的字型大小偏好來縮放。
建議使用sp作為文字的單位,其它用dip
4、dialog.xml說明
①android:layout_marginLeft=”20dip”
margin是邊的意思,上面這句話是說該控制元件距離左邊20個dip。同樣
android:layout_marginRight=”20dip”就是該控制元件距離父控制元件右邊20dip
②android:gravity=”left”:表示該控制元件的text文字顯示在左邊
③android:layout_gravity=”center”:表示該控制元件位於父控制元件的中間
④android:textAppearance的使用
對於能夠顯示文字的控制元件(如TextView EditText RadioButton Button CheckBox等),你有時需要控制字型的大小。Android平臺定義了三種字型大小。
“?android:attr/textAppearanceLarge”
“?android:attr/textAppearanceMedium”
“?android:attr/textAppearanceSmall”
使用方法為:
android:textAppearance=”?android:attr/textAppearanceLarge”
android:textAppearance=”?android:attr/textAppearanceMedium”
android:textAppearance=”?android:attr/textAppearanceSmall”
或
style=”?android:attr/textAppearanceLarge”
style=”?android:attr/textAppearanceMedium”
style=”?android:attr/textAppearanceSmall”
⑤ android:scrollHorizontally=”true”:設定文字超出TextView的寬度的情況下,是否出現橫拉條
⑥android:autoText=”false”:如果設定,將自動執行輸入值的拼寫糾正。此處無效果,在顯示輸入法並輸入的時候起作用。此處設定為false,則為關閉子動能
⑦android:capitalize=”none”:設定英文字母大寫型別。此處無效果,需要彈出輸入法才能看得到
⑧android:password=”true”:以小點”.”顯示文字,用於輸入密碼時
相關文章
- Android UI系列-----Dialog對話方塊AndroidUI
- Android Dialog對話方塊Android
- Android對話方塊Dialog深度剖析Android
- Android 對話方塊 Dialog 深度剖析Android
- Element-Ui元件(三十八)Dialog 對話方塊UI元件
- Android自定義View(1):對話方塊-DialogAndroidView
- Flutter Widgets 對話方塊-DialogFlutter
- android漂亮的對話方塊專案sweet-alert-dialogAndroid
- Flutter 23: 圖解自定義 Dialog 對話方塊Flutter圖解
- 對話方塊的選單、控制元件使用COMMAND_UI (轉)控制元件UI
- C/C++ Qt Dialog 對話方塊元件應用C++QT元件
- android 多項對話方塊Android
- C++ Qt開發:標準Dialog對話方塊元件C++QT元件
- C++ Qt開發:自定義Dialog對話方塊元件C++QT元件
- 對話方塊中對成批控制元件的操作 (轉)控制元件
- android常用對話方塊封裝Android封裝
- C/C++ Qt 自定義Dialog對話方塊元件應用C++QT元件
- Android通知之普通對話方塊通知Android
- Android通知之列表對話方塊通知Android
- Android通知之多選對話方塊通知Android
- 編輯Android程式遊戲對話方塊Android遊戲
- 實現element-ui對話方塊可拖拽功能UI
- VC 對話方塊背景顏色、控制元件顏色控制元件
- Android通知之單選對話方塊通知Android
- 對話方塊函式函式
- 登入對話方塊
- QT常用控制元件(一)——選單欄和對話方塊QT控制元件
- Android通知之進度條對話方塊通知Android
- Android 官方推薦 : DialogFragment 建立對話方塊AndroidFragment
- c#中的模態對話方塊和非模態對話方塊C#
- [MFC]選擇目錄對話方塊和選擇檔案對話方塊
- flutter demo (四):對話方塊Flutter
- Javascript檔案對話方塊JavaScript
- 如何在Element UI 對話方塊裡面載入高德地圖UI地圖
- Android UI控制元件系列:RelativeLayout(相對佈局)AndroidUI控制元件
- easysize_動態調整對話方塊控制元件位置和大小控制元件
- React中的模式對話方塊React模式
- 在 Flutter 使用 GetX 對話方塊Flutter