简单的圆角Dialog

来源:互联网 发布:妆前乳 知乎 编辑:程序博客网 时间:2024/06/05 13:24

 最近看到很多朋友被圆角的Dialog所困,就忍不住写个博客了。现在和我一起简单的完成代码编写吧。

 1.首先圆角的dialog当然需要圆角的背景

 在drawable文件夹下配置圆角的文件bg_dialog.xml

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android">    <solid android:color="#FFFFFF" />    <stroke android:width="1dip" android:color="#bfbfbf" />    <corners         android:radius="10dp"        /></shape>
2.自定义一个Dialog

PromptDialog.class

public class PromptDialog extends Dialog {   private  TextView tv_title,tv_content;    private Button btn_cancle,btn_confirm;    private View view;    private Context context;    private String title,content,cancle,sure;public PromptDialog(Context context,String title,String content,String cancle,String sure) {super(context);// TODO Auto-generated constructor stubthis.context  = context;this.cancle = cancle;this.sure = sure;this.title = title;this.content = content;}   @SuppressLint("NewApi")   public void showDialog(android.view.View.OnClickListener cancleonclick,android.view.View.OnClickListener sureonclick){   Window window = getWindow();   window.requestFeature(window.FEATURE_NO_TITLE);   view = LayoutInflater.from(context).inflate(R.layout.dialog_confirm, null);   tv_title = (TextView) view.findViewById(R.id.tv_title);   tv_content = (TextView) view.findViewById(R.id.tv_content);   btn_cancle = (Button) view.findViewById(R.id.btn_cancle);   btn_confirm = (Button) view.findViewById(R.id.btn_confirm);   tv_title.setText(title);   tv_content.setText(content);   btn_cancle.setText(cancle);   btn_confirm.setText(sure);   btn_cancle.setOnClickListener(cancleonclick);   btn_confirm.setOnClickListener(sureonclick);   LayoutParams params = new LayoutParams(android.view.ViewGroup.LayoutParams.WRAP_CONTENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.CLIP_HORIZONTAL);    this.setContentView(view, params);   this.setCanceledOnTouchOutside(false);this.show();   }}

dialog的XML文件,在布局文件中引用bg_dialog.xml做背景

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:layout_margin="20dp"    android:background="@drawable/bg_dialog"    android:orientation="vertical" >   <RelativeLayout       android:id="@+id/relative_title"       android:layout_width="match_parent"       android:layout_height="40dp"       >       <TextView           android:id="@+id/tv_title"           android:layout_width="wrap_content"           android:layout_height="wrap_content"           android:layout_centerHorizontal="true"           android:layout_alignParentBottom="true"           android:text="系统消息"           android:textSize="16sp"           android:textColor="#000000"           /></RelativeLayout>   <RelativeLayout       android:layout_width="match_parent"       android:layout_height="wrap_content"       android:padding="10dp"       >       <TextView            android:id="@+id/tv_content"           android:layout_width="wrap_content"           android:layout_height="wrap_content"           android:layout_centerInParent="true"           android:text="内容"           android:textSize="15sp"           android:textColor="#000000"           /></RelativeLayout><View    android:layout_width="match_parent"    android:layout_height="0.5dp"    android:background="@color/gray_line_or_boder"    /><LinearLayout    android:layout_width="match_parent"    android:layout_height="40dp"    android:orientation="horizontal"    >       <Button           android:id="@+id/btn_cancle"           android:layout_width="0dp"           android:layout_height="fill_parent"           android:layout_weight="1"           android:text="取消"           android:background="@null"           android:textColor="@color/Orange"           android:textSize="16sp"           />       <View            android:layout_width="0.5dp"           android:layout_height="match_parent"           android:background="@color/gray_line_or_boder"           />           <Button           android:id="@+id/btn_confirm"           android:layout_width="0dp"           android:layout_height="fill_parent"           android:layout_weight="1"           android:text="确定"           android:background="@null"             android:textColor="@color/Orange"                android:textSize="16sp"           />      </LinearLayout></LinearLayout>
3.在Activity中的调用

public class TestActivity extends ActionBarActivity {    private Button button1;    private PromptDialog dialog;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_test);button1 = (Button) findViewById(R.id.button1);button1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubdialog = new PromptDialog(TestActivity.this, "系统提示", "简历完整度不足百分之70", "取消", "继续");dialog.showDialog(cancleListenter, confirmLinstener);}});}//取消监听OnClickListener cancleListenter = new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif(dialog.isShowing()){dialog.dismiss();}}};//确定监听OnClickListener confirmLinstener = new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif(dialog.isShowing()){dialog.dismiss();}}};}


效果图运行下:


大家会看到效果图上dialog的背景虽然是圆的但是,四个圆角外有余白。这就这种情况很正常,在PromptDialog.class类中加上   window.setBackgroundDrawableResource(R.color.touming);  


R.color.touming 的颜色为 #00000000

最后效果图:






0 0