Android開發中如何創建自定義對話框

背景:

無論是Android,還是其他什麼平臺,對話框的主要形式都是彈出,或者我們可以說是一個在當前活動中打開的提示,來執行一些操作或實現一些功能。

你可以用一個對話框來問用戶以確認一個行動,向用戶通告一個事件,或者提示用戶額外信息。因爲對話框擾亂UI流,你應該只是把它們當做最後的手段來用。在大多數情況下,你應該直接整合確認、反饋和提示到你的APP中。

當一個對話框打開,當前活動(通過該活動我們打開了對話框)成爲背景,而對話框成爲前景。在執行對話框中操作並關閉之後,背景中的活動又變回前景。

使用代碼

對話是創建對話框的基礎類。

創建一個帶有如下細節的項目:

  • ProjectName: CustomDialogBox

  • PackageName: sat.tuts4mobile.customdialogbox

  • ActivityName: CustomDialogActivity >

在CustomDialogActivity.java文件複製如下代碼:

package sat.tuts4mobile.customdialogbox;
import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class CustomDialogActivity extends Activity {
    Button buttonDialog;
    TextView textDialog;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
                         
        textDialog = (TextView)findViewById(R.id.textView1);
        buttonDialog = (Button)findViewById(R.id.buttondialog);
        buttonDialog.setOnClickListener(new OnClickListener() {
                             
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                showCustomDialog(textDialog);
            }
        });
                                 
    }
    protected void showCustomDialog(final TextView _textDialog) {
        // TODO Auto-generated method stub
        final Dialog dialog = new Dialog(CustomDialogActivity.this);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setContentView(R.layout.customdailog);
                         
        final EditText editText = (EditText)dialog.findViewById(R.id.editText1);
        Button button = (Button)dialog.findViewById(R.id.button1);   
        button.setOnClickListener(new View.OnClickListener() {
                             
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                _textDialog.setText(editText.getText().toString());
                dialog.dismiss();
            }
        });
                                 
        dialog.show();
    }
}

activity_mail.xml文件中,複製如下代碼:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dip">
    <Button
        android:id="@+id/buttondialog"
        android:layout_width="fill_parent"
        android:layout_height="40dip"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:text="Click to show dialog"
        android:background="#336699"
        android:textSize="25sp"
        android:textColor="#ffffff"/>
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text=""
        android:textSize="25sp"/>
</RelativeLayout>

創建新的XML文件命名爲customdialog.xml並複製如下代碼:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="5dip"
    android:background="#336699">
    <EditText
        android:id="@+id/editText1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:ems="10"
        android:hint="enter text to display"
        android:singleLine="true">
                 
        <requestFocus />
    </EditText>
    <Button
        android:id="@+id/button1"
        android:layout_width="120dip"
        android:layout_height="40dip"
        android:layout_below="@+id/editText1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="17dp"
        android:text="Submit"
        android:textSize="25sp"
        android:background="#669900" />
</RelativeLayout>

當你運行應用程序的時候,你將看到如下顯示:

AndroidAndroidAndroid

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章