Android中的Toast的应用

在程序开发中,经常有我们程序执行完成之后需要提醒用户操作完成。但是只是提醒,而不需要用户去操作什么的时候,我们就回用到Taost来弹出要提示的内容。

Toast的用法

用Toast类的makeText()方法创建

Toast.makeText(this,"要Toast的内容",Toast.LENGTH_SHORT);
三个参数为 上下文、要提示的内容、提示显示的时间

用构造方法创建Toast

通过Toast类的构造方法创建一个toast并设置要显示的内容。
Toast toast = new Toast(this);
        toast.setDuration(Toast.LENGTH_SHORT);
        //toast.setText("111111111"); //如果设置这句会报错This Toast was not created with Toast.makeText()at android.widget.Toast.setText(Toast.java:303)
        toast.setGravity(Gravity.CENTER,0,0);//设置显示的位置,x轴偏移量,y轴偏移量
        LinearLayout layout = new LinearLayout(this);//创建一个线性布局

        ImageView image= new ImageView(this);//创建一个ImageView
        image.setImageResource(R.mipmap.ic_launcher);//设置图片
        image.setPadding(5,5,5,5);//设置图片的padding
        layout.addView(image);//将图片添加到线性布局中

        TextView tv = new TextView(this);//创建一个TextView
        tv.setText("提示内容");//设置提示的内容
        tv.setTextSize(20);//设置字体的大小
        tv.setTextColor(Color.RED);//设置字体的颜色
        //设置TextView的大小
        tv.setLayoutParams(new DrawerLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
        tv.setGravity(Gravity.CENTER);//设置TextView内容的显示位置。如果不设置TextView 大小而只设置这个属性是不起作用的,因为默认的大小是wrap_content,内容就已经在TextView的中央了
        layout.addView(tv);//将TextView 添加到线性布局中

        //如果不设置下面一句会报错 java.lang.RuntimeException: setView must have been called at android.widget.Toast.show(Toast.java:113)
        toast.setView(layout);//将我们创建的布局设置给toast
        toast.show();//展示toast

以上两种的问题

当我们连续的点击按钮的时候,上面两种方法显示的toast会一个个显示直到结束。而我们应该是在同样的内容显示的时候不重复显示,也是提升用户体验的一种方法。我们稍微判断一下

public class TestActivity extends Activity {

    Toast toast;

    private String message = "我是一个Toast";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //创建一个线性布局,并且给里面添加一个button,点击button弹出提示
        LinearLayout layout = new LinearLayout(this);
        Button button= new Button(this);
        button.setText("点击弹出Toast");
        layout.addView(button);
        setContentView(layout);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (toast ==null){
                showToast();
                }else {
                    toast.setText(message);
                }
                toast.show();
            }
        });
    }

    private void showToast() {
        toast = Toast.makeText(this,
                message,
                Toast.LENGTH_SHORT);

    }

}
为了方便我们将Toast提示抽离出来 单独也一个类
public class MyToast {

    public static Toast toast;

    public static void showInfo(Context context, String message){
        if (toast == null){
            toast = Toast.makeText(context,message,Toast.LENGTH_SHORT);
        }else {
            toast.setText(message);
        }
        toast.show();
    }

}
此时在button的点击事件里面我们直接用 MyToast.showInfo(TestActivity.this,"Toast的内容"); 调用即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值