自定義AlertDialog對話框(1)-簡單實現

說明

很多情況下,由於Android系統自帶組件不夠美觀我們需要自定義自己的組件。實現自定義對話框有幾種方法,最簡單的就是繼承Dialog,最複雜的可以到自定義組件範疇。當前文章提供簡單實現的方法:
1、創建一個AlertDialog子類並實現OnClickListener接口。

public class MyDialog extends AlertDialog implements OnClickListener {
	private Context mContext;
	private Button mBtnOk;
	private Button mBtnCancel;

	public MyDialog(Context context) {
		super(context);
		mContext = context;
	}

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.view_dialog);
		initView();
		initData();
	}

	private void initView() {
		mBtnOk = (Button) findViewById(R.id.ok);
		mBtnCancel = (Button) findViewById(R.id.cancel);
	}

	private void initData() {
		mBtnOk.setOnClickListener(this);
		mBtnCancel.setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.ok:
			doOk();
			break;
		case R.id.cancel:
			doCancel();
			break;

		default:
			break;
		}
	}

	private void doOk() {
		dismiss();
		Toast.makeText(mContext, "OK", Toast.LENGTH_LONG).show();
	}

	private void doCancel() {
		dismiss();
		Toast.makeText(mContext, "Cancel", Toast.LENGTH_LONG).show();
	}
}

注意:view_dialog爲自定義佈局,其代碼實現爲:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="250dp"
    android:layout_height="wrap_content"
    android:background="#FFFFFF"
    android:gravity="center_horizontal"
    android:orientation="vertical" >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#0000AA"
        android:gravity="center"
        android:padding="4dp"
        android:text="這是標題 "
        android:textColor="#FFFFFF"
        android:textSize="22sp" />


    <TextView
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:layout_marginBottom="4dp"
        android:layout_marginLeft="6dp"
        android:layout_marginRight="6dp"
        android:layout_marginTop="4dp"
        android:text="這是內容"
        android:textColor="#000000"
        android:textSize="18sp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/ok"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:layout_weight="1"
            android:background="#FF0000"
            android:padding="4dp"
            android:text="確定"
            android:textColor="#000000" />

        <Button
            android:id="@+id/cancel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:layout_weight="1"
            android:background="#CCC"
            android:padding="4dp"
            android:text="取消"
            android:textColor="#000000" />
    </LinearLayout>

</LinearLayout>

2、在需要彈出AlertDialog的地方實例化並調用show()方法即可。

MyDialog mDialog = new MyDialog(MainActivity.this);
mDialog.show();

3、結果
device-2016-02-15-180955.png

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