最近在看Xamarin使用C#来撰写Android App .
纪录一下,顺便给之后有需要的人可以有所参考
今天要来聊的是关于Toast 这东西,这在以前Android 上面我是很常使用
拿来log 做debug 或是做一些给User 的简单提示都是非常方便的.
Toast样貌:
首先规划两个按钮一个点击后就是显示传统的Toast ,另外一个我们来测试有点变化图片+文字的Toast
首先看一下主画面 Main.axml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
android:id="@+id/btnToast1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="測試傳統吐司" />
<Button
android:id="@+id/btnToast2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="測試文情並茂吐司" />
</LinearLayout>
其实也没啥好解释的两颗按钮,第一颗 bntToast1,按下去后就会显示传统的Toast
第二颗按钮按下去后就是出现有图文加在一起的Toast
来看Code.
Activity1.cs:
using Android.App;
using Android.Widget;
using Android.OS;
namespace XamarinToastSamle
{
[Activity(Label = "測試吐司Sample", MainLauncher = true, Icon = "@drawable/icon")]
public class Activity1 : Activity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
//取得btnToast1
var btnToast1 = FindViewById<Button>(Resource.Id.btnToast1);
//設定其Click 事件
btnToast1.Click += delegate
{
Toast.MakeText(this, "Hello World.Xamarin", ToastLength.Short).Show();
};
}
}
}
传统Toast非常的简单,只要Toast.MakeText(预被挂载的Context通常是Activity 或是Application , 显示文字 , 显示时间的长短) 结果: 很简单吧,再来我们要如何显示图文并茂的Toast 首先我们要先建立一个Layout来帮忙,首先我们在 Resources 的Layout中加入一个TaostPopItem.axml 首先看一下画面: 看一下它的原始XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
他默认为LinearLayout但是因为排版关系,我将原始的LinearLayout改成 我需要的RelativeLayout
关于这些Android Layout 设计哲学 可以参考这里 : http://developer.android.com/guide/topics/ui/declaring-layout.html
我就将不赘述再来我们透过左边工具箱,拉入ImageView 还有TextView
在拉TextView的时候有一个小技巧,如果拉在ImageView旁边的蓝线位置他的默认 layout_toRightOf 的property 会是该对象
之后我们调整一下一些Property 修正一下使得结果如下
ToastPopItem.axml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:src="@android:drawable/ic_menu_gallery"
android:layout_width="50dp"
android:layout_height="50dp"
android:id="@+id/imageView1" />
<TextView
android:text="Text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/imageView1"
android:id="@+id/textView1"
android:paddingTop="15dp" />
</RelativeLayout>
画面:
因为我们需要用到一张图片,所以我复制一张InfoIcon.png 的图片至 Resource > Drawable > InfoIcon.png 之下
之后给程序呼叫用
再来回到主Activity :
加上btnToast2 的Click 使得Code 为:
using Android.App;
using Android.Widget;
using Android.OS;
namespace XamarinToastSamle
{
[Activity(Label = "測試吐司Sample", MainLauncher = true, Icon = "@drawable/icon")]
public class Activity1 : Activity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
//取得btnToast1
var btnToast1 = FindViewById<Button>(Resource.Id.btnToast1);
//設定其Click 事件
btnToast1.Click += delegate
{
Toast.MakeText(this, "Hello World.Xamarin", ToastLength.Short).Show();
};
//取得btnToast2
var btnToast2 = FindViewById<Button>(Resource.Id.btnToast2);
//設定其Click事件
btnToast2.Click += delegate
{
var view = LayoutInflater.Inflate(Resource.Layout.ToastPopItem, null);
var imgMain = view.FindViewById<ImageView>(Resource.Id.imageView1);
var txt = view.FindViewById<TextView>(Resource.Id.textView1);
//載入Drawable 中的 InfoIcon.png
imgMain.SetImageResource(Resource.Drawable.InfoIcon);
txt.Text = "圖文並茂的吐司";
var toast = new Toast(this);
//設定該View
toast.View = view;
toast.Show();
};
}
}
}
结果:
Xamarin制作吐司(Toast)DEMO:
https://onedrive.live.com/redir.aspx?cid=f4beba0b2aa17156&resid=F4BEBA0B2AA17156!143&parId=F4BEBA0B2AA17156!107&authkey=!AE8KECNXck5vxRs
未经允许不得转载:前端撸码笔记 » Xamarin: 制作吐司(Toast)以及图文并茂的Toast