Androidの自定義對話框AlertDialog
學習Androidの自定義對話框AlertDialog,權當做下筆記,友善以後使用,或者其他朋友。
1. 自定義一個AlertDialog 時候,建立自己的Dialog對象,然後利用setContentView() 添加自定義布局即可。 這裡是主要初始化的對話框代碼:
private void showCustomMessage(String pTitle, final String pMsg) {
final Dialog lDialog = new Dialog(MainMenuActivity.this,
android.R.style.Theme_Translucent_NoTitleBar);
lDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
lDialog.setContentView(R.layout.view_okcanceldialogview);
((TextView) lDialog.findViewById(R.id.dialog_title)).setText(pTitle);
((TextView) lDialog.findViewById(R.id.dialog_message)).setText(pMsg);
((Button) lDialog.findViewById(R.id.ok)).setText("Ok");
((Button) lDialog.findViewById(R.id.cancel))
.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// write your code to do things after users clicks
// CANCEL
lDialog.dismiss();
}
});
((Button) lDialog.findViewById(R.id.ok))
.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// write your code to do things after users clicks OK
lDialog.dismiss();
}
});
lDialog.show();
}
我們看下布局檔案xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|center_vertical"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:background="@drawable/alert"
android:gravity="center_horizontal"
android:orientation="vertical" >
<TextView
android:id="@+id/dialog_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="17dip"
android:text="About to call 323"
android:textColor="#ffffff"
android:textSize="16dip"
android:textStyle="bold" />
<TextView
android:id="@+id/dialog_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dip"
android:gravity="center_horizontal"
android:text="Are you sure you want to proceed?"
android:textColor="#ffffff"
android:textSize="16dip" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dip"
android:layout_marginTop="10dip"
android:gravity="center_horizontal"
android:orientation="horizontal" >
<Button
android:id="@+id/cancel"
android:layout_width="0dip"
android:layout_height="40dip"
android:layout_gravity="left"
android:layout_marginLeft="10dip"
android:layout_weight="0.5"
android:background="@drawable/custom_button1"
android:text="Cancel"
android:textColor="@color/white"
android:textStyle="bold" />
<Button
android:id="@+id/ok"
android:layout_width="0dip"
android:layout_height="40dip"
android:layout_marginBottom="10dip"
android:layout_marginRight="10dip"
android:layout_weight="0.5"
android:background="@drawable/custom_button"
android:text="OK"
android:textColor="@color/white"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
看起啦很簡單啦,所有涉及全部在xml 中配置好了。
在這裡還要注意定義時候
final Dialog lDialog = new Dialog(MainMenuActivity.this,
android.R.style.Theme_Translucent_NoTitleBar);
lDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
如果你使用了沉浸式狀态欄時候,就會出現了沖突發生。是以使用此自定義對話框,避免使用該沉浸式狀态欄。
源碼下載下傳: https://git.oschina.net/xiabing/IponeAlertType.git