《新手,本身的简单理解,勿喷,有更好建议欢迎提出》
一、在设置dialog布局上的时候 我须要作一个圆角的dialog,我像往常同样定义一个<shape>而后作为个人dialog的背景,可是此时我发如今dialog的四周有一部分突出的四个小角,代码设置样式设置仍是各类没解决,后经网上一篇文章启发,我将dialog的背景与系统背景均设置成了透明色,而后在shape中再经过solid为dialog整个填充上颜色,最终实现了我想要的效果;
二、实现代码:
在styles文件中设置我本身的对话框的一些样式
<style name="MyDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:background">#00000000</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
自定义对话框最外围的背景(我定义了一个dialog_bg_xml文件):
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="5dp"/>
<stroke android:width="1dp"
android:color="@android:color/holo_blue_bright"/>
<solid android:color="@android:color/white"/>
</shape>
接着是布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/dialog_bg_xml">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/dialog_title"
android:textSize="20sp"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:text="撤销出库单"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/dialog_message"
android:textSize="14sp"
android:layout_marginLeft="15dp"
android:layout_marginBottom="45dp"
android:text="肯定撤销出库单YT201405"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginLeft="10dp"
android:layout_marginBottom="10dp"
android:layout_marginRight="10dp">
<Button
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:text="取消"
android:layout_marginRight="35dp"
android:id="@+id/cancle_btn"
android:background="@drawable/dialog_button_bg_xml"
android:textSize="16sp"/>
<Button
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:text="肯定"
android:id="@+id/ok_btn"
android:background="@drawable/dialog_button_bg_xml"
android:textSize="16sp"/>
</LinearLayout>
</LinearLayout>
MyDialog文件
package com.pass.view;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;
import hospitaltakeout.chuanyue.com.hospitaltakeout.R;
/**
* Created by Administrator on 2016-07-12.
*/
public class MyDialog extends Dialog {
private View view = null;
private TextView title;
private TextView message;
private Button cancle;
private Button ok;
public MyDialog(Context context, View view) {
super(context,R.style.MyDialog);
this.view = view;
}
public MyDialog(Context context) {
super(context,R.style.MyDialog);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (view == null){
setContentView(R.layout.double_botton_layout);
initView();
setListener();
}else{
setContentView(view);
}
}
private void initView(){
title = (TextView) findViewById(R.id.dialog_title);
message = (TextView) findViewById(R.id.dialog_message);
cancle = (Button) findViewById(R.id.cancle_btn);
ok = (Button) findViewById(R.id.ok_btn);
}
private void setListener(){
cancle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyDialog.this.dismiss();
}
});
ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
public void setTitle(String str){
title.setText(str);
}
public void setMessage(String str){
message.setText(str);
}
}
最后在activity中使用的时候就像日常的dialog同样使用就好;固然也可不在样式中设置背景,而后在代码中经过 getWindow().setBackgroundDrawable(new BitmapDrawable()); 或者getWindow().setBackgroundDrawableResource(android.R.color.transparent)来设置大体就是将原有背景设置透明,让现有的背景显现;