Xamarin: 制作吐司(Toast)以及图文并茂的Toast

最近在看Xamarin使用C#来撰写Android App .

纪录一下,顺便给之后有需要的人可以有所参考 :)

今天要来聊的是关于Toast 这东西,这在以前Android 上面我是很常使用

拿来log 做debug 或是做一些给User 的简单提示都是非常方便的.

Toast样貌:

Screenshot_2013-07-08-18-15-03

首先规划两个按钮一个点击后就是显示传统的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 , 显示文字 , 显示时间的长短) 结果: Screenshot_2013-07-08-18-37-12 很简单吧,再来我们要如何显示图文并茂的Toast 首先我们要先建立一个Layout来帮忙,首先我们在 Resources 的Layout中加入一个TaostPopItem.axml 2013-07-08_183935 2013-07-08_183954 首先看一下画面: 2013-07-08_184143 看一下它的原始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

2013-07-08_184627

在拉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>

画面:

2013-07-08_184930

因为我们需要用到一张图片,所以我复制一张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();

            };

        }
    }
}

结果:

Screenshot_2013-07-08-18-00-29

Xamarin制作吐司(Toast)DEMO:

https://onedrive.live.com/redir.aspx?cid=f4beba0b2aa17156&resid=F4BEBA0B2AA17156!143&parId=F4BEBA0B2AA17156!107&authkey=!AE8KECNXck5vxRs

未经允许不得转载:前端撸码笔记 » Xamarin: 制作吐司(Toast)以及图文并茂的Toast

已是最后文章

下一篇: