Android 的 Toast 是以一种一闪即过的方式展示信息很好的方式,比如保存操作之后的保存成功提示。默认的Toast是文本信息,可以设置Toast的位置。能否在开发过程中自定义Toast呢?比如文本+图这种形式的Toast,这种方式是可以的,今天写了一个例子,现贴出来作为记录。

1)CustomToastActivity

一个继承自Activity的类,点击Activity里面的Button的时候,弹出用户自定义Toast

package com.augmentum.example;import com.example.androidexample.R;import android.app.Activity;import android.os.Bundle;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.Button;import android.widget.Toast;public class CustomToastActivity extends Activity {private Button btnToast;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_toast);LayoutInflater inflater = getLayoutInflater();View toastLayout = inflater.inflate(R.layout.toast, (ViewGroup)findViewById(R.id.toast_layout));final Toast toast = new Toast(getApplicationContext());toast.setGravity(Gravity.CENTER, 0, 10);  toast.setDuration(Toast.LENGTH_LONG);  toast.setView(toastLayout); btnToast = (Button)findViewById(R.id.btnToast);btnToast.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View view) {// TODO Auto-generated method stub toast.show(); }});}}

2) activity_toast.xml

CustomToastActivity的布局文件,仅包含一个Button

<?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="match_parent"    android:orientation="horizontal" >         <Button             android:id="@+id/btnToast"          android:layout_width="0dip"          android:layout_height="wrap_content"          android:text="Show Custom Toast"          android:layout_weight="1"/></LinearLayout>

3)toast.xml

用户自定义的Toast,包含一个ImageView和一个TextView

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/toast_layout"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="horizontal" >        <ImageView    android:id="@+id/image"    android:src="@+drawable/kugou"   android:layout_height="wrap_content"   android:layout_width="wrap_content"   android:layout_gravity="center"   android:contentDescription="I am a image"/><TextView        android:id="@+id/text"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="I am a custom toast."         android:textSize="25sp"/> </LinearLayout>

4)总结

A) 用户自定义的Toast使用了LayoutInflater类,该类是生成View的,通过这个类生成View的实例,然后赋值给Toast实例的view属性。

B)Toast的位置可以通过Gravity属性来设置。

5)运行效果



更多相关文章

  1. android前端和java后端通过RSA加密方式传递数据时出现javax.cryp
  2. 五、android中解析xml
  3. Android(安卓)- 开发实例(16):ListView新的使用方式
  4. Android(安卓)数据操作(一) 自定义AttributeSet属性
  5. 一种 Android(安卓)应用内全局获取 Context 实例的装置
  6. Android(安卓)触摸屏手势识别
  7. android 之 在Activity之间传递数据(使用意图传递数据之通用方式
  8. Android(安卓)十大导航设计错误
  9. Android(安卓)Studio运行程序出现Session ‘app’: Error Launch

随机推荐

  1. SSH-Agent实现多台机器登陆
  2. 代码管理平台GITLAB
  3. 自动化运维管理平台OpsManage部署
  4. 自动化运维Saltstack
  5. 更改时间、时区
  6. 两集合比较判断
  7. 自动化运维Ansible
  8. Jenkins入门(一)
  9. Jenkins入门(二)
  10. ELK入门