不說廢話,直接上代碼,在代碼上添加註釋說明。
1.建立xml文件
這個xml佈局:從上到下:一個標題 ,中間內容,下面兩個並列的按鈕。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/background_dialog"
android:orientation="vertical"
android:paddingBottom="50.0dip"
android:paddingLeft="50.0dip"
android:paddingRight="50.0dip"
android:paddingTop="20.0dip"
android:layout_gravity="center">
<TextView
android:id="@+id/tip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:text="提示"
android:textColor="@color/white"
android:textSize="20.0sp" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1.0"
android:gravity="center_vertical"
android:orientation="vertical">
<TextView
android:id="@+id/message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:textSize="20.0sp" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal">
<Button
android:id="@+id/ok_btn"
style="@style/button"
android:text="確定" />
<Button
android:id="@+id/cancle_btn"
style="@style/button"
android:layout_marginLeft="80.0dip"
android:text="取消" />
</LinearLayout>
</LinearLayout>
2.建立自定義dialog類繼承Dialog
//
public class NoticeDialog extends Dialog {
private Window mWindow;
public NoticeDialog(@NonNull Context context) {
super(context);
}
// 自定義 dialog
public NoticeDialog(Context paramContext, int width, int height, int layoutResID, int themeResId) {
super(paramContext, themeResId);
setContentView(layoutResID);
mWindow = getWindow();
WindowManager.LayoutParams localLayoutParams = mWindow.getAttributes();
localLayoutParams.width = width;
localLayoutParams.height = height;
localLayoutParams.gravity = 17;
mWindow.setAttributes(localLayoutParams);
}
}
3.在活動中如何使用自定義的dialog
1. 制定對話框的樣式。
在目錄:res/values/stytles.xml中添加
<style name="dialog" parent="@android:style/Theme.Dialog">
<!-- 窗口背景 -->
<item name="android:windowBackground">@color/trans</item>
<!--是否有邊框 -->
<item name="android:windowFrame">@null</item>
<!-- 是否沒有標題 -->
<item name="android:windowNoTitle">true</item>
<!-- 是否浮現在activity之上 -->
<item name="android:windowIsFloating">true</item>
<!-- 是否半透明 -->
<item name="android:windowIsTranslucent">false</item>
<!-- 是否背景模糊 -->
<item name="android:backgroundDimEnabled">true</item>
</style>
2.使用
private void showDialog() {
TextView textView;
// 1.new 對象:參入參數:content, 對話框寬,對話框高,對話的佈局,對話框的樣式
final CustomDialog customDialog = new CustomDialog(getContext(), 400, 500, dialog佈局, 對話框樣式);
// 2.獲取對話框的元素,這樣就可以對每個元素設置自己想要的操作:比如設置內容,隱藏對話框
Button localButton1 = (Button) customDialog.findViewById(R.id.save_dischange_yes);
Button localButton2 = (Button) customDialog.findViewById(R.id.save_dischange_no);
textView = ((TextView) customDialog.findViewById(R.id.display_change_txt));
textView.setText(“這是對話框”);
//設置textview的位置
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) textView.getLayoutParams();
lp.gravity = Gravity.CENTER;
localButton1.setOnClickListener(new View.OnClickListener() {
public void onClick(View paramAnonymousView) {
customDialog.dismiss();
}
});
localButton2.setOnClickListener(new View.OnClickListener() {
public void onClick(View paramAnonymousView) {
customDialog.dismiss();
}
});
customDialog.setCancelable(true);
customDialog.show();
}
說明:需要什麼樣的格式的對話框,就可以改變佈局,比如可以可以把中間的TextView換成ImageView或者SeekBar,然後具體的如何操作,可以獲取到元素再進行操作。