天天看點

Android 自定義Dialog自定義Dialog

自定義Dialog

根據需求定義自己的布局Dialog

  • 定義布局
  • 定義樣式
  • 建立類并繼承Dialog
  • 使用Dialog

定義布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="300dp"
    android:layout_height="wrap_content"
    android:gravity="center"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical">

        <LinearLayout
            android:layout_margin="15dp"
            android:layout_width="match_parent"
            android:orientation="vertical"
            android:background="@drawable/bg_alertdialog_talklogistic"
            android:layout_height="wrap_content">
            <EditText
                android:id="@+id/dialog_talklocation_remark"
                android:layout_margin="10dp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/anniubg4_n"
                android:textColor="@color/black"
                android:gravity="start|top"
                android:hint="@string/qtxdqwlbzxx"
                android:minHeight="80dp"
                android:padding="10dp"
                android:textColorHint="@color/ztys21"
                android:textSize="12sp" />

            <TextView
                android:id="@+id/dialog_talklocation_btn"
                android:layout_width="match_parent"
                android:layout_height="40dp"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:layout_marginTop="10dp"
                android:textColor="@color/white"
                android:text="@string/submitLocation"
                android:gravity="center"
                android:textSize="18sp"
                android:layout_marginBottom="10dp"
                android:background="@drawable/logistics_info_remarkbtnbg"/>
        </LinearLayout>
        <ImageView
            android:id="@+id/logistics_info_close"
            android:layout_marginTop="5dp"
            android:layout_marginRight="5dp"
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:layout_alignParentRight="true"
            android:src="@drawable/ic_talklogistics_close" />
</RelativeLayout>
           

定義樣式

<style name="mystyle" parent="@android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowIsTranslucent">false</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowBackground">@color/logisticsInfoDialog</item>
        <item name="android:backgroundDimEnabled">true</item>
    </style>
           

建立類并繼承Dialog

public class TalkLocationDialog extends Dialog {

    public TalkLocationDialog(Context context) {
        super(context);

    }

    public TalkLocationDialog(Context context, int theme) {
        super(context, theme);
    }


    public static class Builder {

        private Context context;

        public Builder(Context context) {
            this.context = context;
        }

        public TalkLocationDialog create() {
            //主題可以換
            final TalkLocationDialog dialog = new TalkLocationDialog(context,R.style.mystyle);
            View layout = AppUtils.inflate(R.layout.alertdialog_talklocation);
            dialog.addContentView(layout, new LinearLayout.LayoutParams(
                    LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
            dialog.setContentView(layout);
            return dialog;
        }
    }
}
           

使用Dialog

TalkLocationDialog alertDialog = new TalkLocationDialog.Builder(WuLiuXinXiActivity.this).create();
alertDialog.show();