《新手,本身的簡單理解,勿噴,有更好建議歡迎提出》
一、在設置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)來設置大體就是將原有背景設置透明,讓現有的背景顯現;