Android Toast进阶

来源:互联网 发布:中国移动暂停数据流量 编辑:程序博客网 时间:2024/06/14 08:33

上一节提到了最基本的Toast用法,用法是十分简单的

这一篇,来说下剩下的Toast怎么用

------自定义位置的Toast

------带图片的Toast

------自定义Toast

 

一、自定义位置的Toast

这个实现的思路很简单,主要是应用Toast的一个方法

Toast.setGravity(intgravity,int xOffset,int yOffset)


具体代码如下:

布局xml文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/container"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="com.example.toast_02.MainActivity"    tools:ignore="MergeRootFrame" >    <Button        android:id="@+id/btn_ToastPoi"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="@string/ToastPoi" /></LinearLayout>


Java代码:

package com.example.toast_02;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.widget.ImageView;import android.widget.LinearLayout;import android.widget.Toast;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//自定义Toast位置findViewById(R.id.btn_ToastPoi).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Toast toast =Toast.makeText(getApplicationContext(), "自定义Toast位置", Toast.LENGTH_LONG);toast.setGravity(Gravity.CENTER, 0 , 0);toast.show();}});}}

运行结果:


 

二.带图片的Toast

这个主要通过一个toast.getView()方法来实现,这个方法返回一个View对象,强转为一个布局这里为LinearLayout,然后在创建一个ImageView对象,最后添加到布局中,最后在调用toast.show()来显示Toast


具体代码如下:

 布局xml文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/container"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="com.example.toast_02.MainActivity"    tools:ignore="MergeRootFrame" >    <Button        android:id="@+id/btn_ToastWithPic"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="@string/ToastWithPic" /></LinearLayout>
Java代码:

package com.example.toast_02;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.widget.ImageView;import android.widget.LinearLayout;import android.widget.Toast;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//带图片的ToastfindViewById(R.id.btn_ToastWithPic).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Toast toast =Toast.makeText(getApplicationContext(), "带图片的Toast", Toast.LENGTH_LONG);//通过Toast创建一个LinearLayoutLinearLayout layout = (LinearLayout) toast.getView();//创建一个ImageView对象,并添加到LinearLayout中ImageView imageView = new ImageView(MainActivity.this);imageView.setImageResource(R.drawable.ic_launcher);//添加layout.addView(imageView);//显示Toasttoast.show();}});}}



运行结果:

 

三.自定义的Toast

自定义的Toast首先要在layout文件中添加一个布局文件,然后在代码中用

LatoutInflater进行加载布局文件,最主要的就是这个方法很重要toast.setView()


来实现布局文件的加载。

具体代码如下:

 布局xml文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/container"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="com.example.toast_02.MainActivity"    tools:ignore="MergeRootFrame" >    <Button        android:id="@+id/btn_ToastBySelf"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="@string/ToastBySelf" /></LinearLayout>

自定义的Toast xml布局文件:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent" >    <ImageView        android:id="@+id/imageView1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_centerHorizontal="true"        android:layout_marginTop="32dp"        android:contentDescription="@string/Img"        android:src="@drawable/ic_launcher" />    <TextView        android:id="@+id/textView1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@+id/imageView1"        android:layout_centerHorizontal="true"        android:text="@string/hello_world"        android:textAppearance="?android:attr/textAppearanceLarge" /></RelativeLayout>



Java代码:

package com.example.toast_02;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.widget.ImageView;import android.widget.LinearLayout;import android.widget.Toast;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//自定义ToastfindViewById(R.id.btn_ToastBySelf).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {//自定义Toast主要是利用LayoutInflater来实现LayoutInflater layoutInflater = getLayoutInflater();//加载一个布局文件,自定义的布局文件View view = layoutInflater.inflate(R.layout.layout_toast,null);//ToastToast toast = new Toast(getApplicationContext());//设置Toast显示时长toast.setDuration(Toast.LENGTH_LONG);//设置Toast的View对象toast.setView(view);//显示Toasttoast.show();}});}}


运行结果:

 


0 0
原创粉丝点击