Android 自定义Toast、Dialog

开发过程中可能需要自定义一些控件,这篇先简单说一下简单的吐司、对话框的实现

一、Toast 

1.直接创建一个类MyToast,直接看代码:

public class MyToast {
    private static Toast toast;
    public static Toast showToast(Context context,String the_text){
        toast = new Toast(context);
        toast.setDuration(Toast.LENGTH_SHORT);
        View view = View.inflate(context, R.layout.toast_show,null);
        TextView tv_toast_text = (TextView) view.findViewById(R.id.tv_toast_text);
        tv_toast_text.setText(the_text);
        toast.setView(view);
        toast.setGravity(Gravity.CENTER, 0, 0);
        return toast;
    }
}

2.创建视图布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/tv_toast_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="@drawable/mytoastshape"
        android:gravity="center"
        android:paddingBottom="8dp"
        android:paddingLeft="30dp"
        android:paddingRight="30dp"
        android:paddingTop="8dp"
        android:textColor="#ffffff" />
</LinearLayout>

3.使用的时候直接:

MyToast.showToast(ImportantActivity.this,"提示的内容").show();



二、Dialog  (只说最常用的一种,其他的同理)

1.第一种,先看图片


2.自定义代码:

public class MyDialog extends Dialog {
    private Button positiveButton, negativeButton;
    private TextView contenttv;
    public MyDialog(Context context) {
        super(context, R.style.mydialog);
        View view = LayoutInflater.from(getContext()).inflate(R.layout.mydialoglayout, null);  //通过LayoutInflater获取布局
        contenttv = (TextView) view.findViewById(R.id.title_this);
        positiveButton = (Button) view.findViewById(R.id.acceptbtn);
        negativeButton = (Button) view.findViewById(R.id.refusebtn);
        setContentView(view);  //设置view
    }
    //设置内容
    public void setContent(String content) {
        contenttv.setText(content);
    }
    //取消按钮监听
    public void setOnPositiveListener(View.OnClickListener listener){
        positiveButton.setOnClickListener(listener);
    }

    //确定按钮监听
    public void setOnNegativeListener(View.OnClickListener listener){
        negativeButton.setOnClickListener(listener);
    }
}
3.布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout   xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="200dp"
    android:layout_height="40dp"
    android:background="@drawable/mydialogshape">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/toprl"
        android:layout_above="@+id/bottomoll"
        >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/title_this"
            android:text="确定吗?"
            android:textSize="17sp"
            android:textColor="#333333"
            android:layout_centerVertical="true"
            android:layout_centerHorizontal="true" />
    </RelativeLayout>
    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="#eeeeee"
        android:layout_below="@+id/toprl"
        android:layout_marginBottom="10dp"
        />
    <RelativeLayout
        android:id="@+id/bottomoll"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        >
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <Button
                android:id="@+id/acceptbtn"
                android:layout_width="wrap_content"
                android:layout_height="30dp"
                android:layout_marginTop="6dp"
                android:layout_marginBottom="6dp"
                android:layout_weight="1"
                android:text="取消"
                android:textColor="#999999"
                android:background="@null"
                android:gravity="center"
                android:textSize="16sp"
                />

            <View
                android:layout_width="1dp"
                android:layout_height="match_parent"
                android:background="#eeeeee"
                />
            <Button
                android:id="@+id/refusebtn"
                android:layout_width="wrap_content"
                android:layout_height="30dp"
                android:layout_marginTop="6dp"
                android:layout_marginBottom="6dp"
                android:layout_weight="1"
                android:text="确定"
                android:textColor="#488927"
                android:background="@null"
                android:textSize="16sp"
                android:gravity="center"
                />
        </LinearLayout>
    </RelativeLayout>
</RelativeLayout  >
3.使用:

//对话框
    protected void showDialog() {
        WindowManager m = getWindowManager();
        Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用

        final MyDialog myDialog = new MyDialog(MainActivity.this);
        myDialog.getWindow().setLayout((int) (d.getWidth() * 0.65), (int) (d.getHeight() * 0.2)); 
        myDialog.setContent("是否取消上传照片?");
        myDialog.show();
        myDialog.setOnPositiveListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                myDialog.dismiss();
            }
        });
        myDialog.setOnNegativeListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                myDialog.dismiss();
                //点击按钮后处理逻辑
                
            }
        });

    }

猜你喜欢

转载自blog.csdn.net/qiy6010/article/details/77470917