Android学习笔记之Toast

<1>简介

Toast是一个为用户快速传递小消息的视图。Toast类可以帮助你创建和展现那些消息。

当视图显示给用户的时候,看起来就像漂浮在应用程序之上。它将不会接收到的鼠标焦点。会一闪而过。

给你两个例子:音量控制和说你的设置已经保存的简短消息

 

最简单的方法是使用这个类调用一个静态方法,能构建你所需要的一切并且返回一个新Toast对象。

 

<2>创建

首先,实例化一个带有makeText()方法的Toast对象。

该方法带有三个参数:应用程序Context,文字信息,Toast存在时间。

它返回一个正确地初始化Toast对象。你可以利用show()方法显示这个Toast。

Context context = getApplicationContext();
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);toast.show();

 

然而,你可以想位置不同的Toast,甚至用自己的布局,而不是一个简单的文本信息。

<3>定位Toast

一个标准的toast notification 会出现在屏幕的底部,水平方向居中。你可以改变这一定位用public    void    setGravity(int gravity, int xOffset, int yOffset)方法。

这个方法需要三个参数:Gravity常量,X方向的偏移量,Y方向的偏移量;

例如,如果你决定应该出现在左上角,你可以设置gravity像这样:

toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);

如果你想向右边推进,你只需要稍微改变一下第二个参数的值就可以了。

如果你想向下边推进,你只需要稍微改变一下第三个参数的值就可以了。

Gravity常量:打开查看常量

package xiaosi.toast;

import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.widget.Toast;

public class ToastActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        Toast toast = Toast.makeText(this,"祝你新婚快乐",Toast.LENGTH_LONG);
        toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);
        toast.show();
    }
}

<4>创建一个定制的Toast

如果一个简单的文本信息是不够的,你可以为你Toast创建一个自定义的布局。

为了创建一个自定义布局,定义一个视图布局在XML或在你的应用程序代码,把View对象传递给给setView(View)方法。

例如:

建立一个布局:(toast_layout.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"              
    android:id="@+id/toast_layout_root"              
    android:orientation="horizontal"              
    android:layout_width="fill_parent"             
     android:layout_height="fill_parent"              
     android:padding="10dp"              
     android:background="#DAAA"              
     >    
     <ImageView 
         android:id="@+id/image"               
         android:layout_width="wrap_content"               
         android:layout_height="fill_parent"               
         android:layout_marginRight="10dp"               
         />    
    <TextView 
        android:id="@+id/text"              
        android:layout_width="wrap_content"              
        android:layout_height="fill_parent"              
        android:textColor="#FFF"              
        />
</LinearLayout>

注意的LinearLayoutID元素是“toast_layout”。

package xiaosi.toast;

import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class ToastActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        LayoutInflater inflater = getLayoutInflater();
        View layout = inflater.inflate(R.layout.toast_layout,(ViewGroup) findViewById(R.id.toast_layout_root));
        ImageView image = (ImageView) layout.findViewById(R.id.image);
        image.setImageResource(R.drawable.ic_launcher);
        TextView text = (TextView) layout.findViewById(R.id.text);
        
        
        Toast toast = Toast.makeText(this,"祝你新婚快乐",Toast.LENGTH_LONG);
        toast.setGravity(Gravity.CENTER, 0, 0);
        toast.setView(layout);
        toast.show();
    }
}

首先,检索LayoutInflater 通过getLayoutInflater()和(或getSystemService())

然后利用inflate(int,ViewGroup)方法填充XML中的布局。第一参数是布局的资源ID,第二个是一个View。

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值