不说废话,直接上代码,在代码上添加注释说明。
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,然后具体的如何操作,可以获取到元素再进行操作。