最近在看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)以及圖文並茂的Toast (转帖)的更多相关文章

  1. [Xamarin] 製作Options Menu、Intent 呼叫網址和Market (转帖)

    Android的設計如果沒意外的話通常有三棵按鈕,BACK,HOME,OPTION (圖片來源:http://developer.android.com/design/index.html) 在OPT ...

  2. [Xamarin] 用Service 來製作一個Notification的時鐘 (转帖)

    這篇利用來製作一個會出現在Notification的時鐘,來敘述一下 Service,在你製作的App被關閉時,可以透過Service繼續運行你想處理的部分,當然Service 也有其生命周期 接下來 ...

  3. Android Toast 设置到屏幕中间,自定义Toast的实现方法,及其说明

    http://blog.csdn.net/wangfayinn/article/details/8065763 Android Toast用于在手机屏幕上向用户显示一条信息,一段时间后信息会自动消失. ...

  4. [Xamarin] 透過 intent-filter 來接管 http ,製作偽瀏覽器 (转帖)

    使用Android 的朋友一定對這畫面不陌生在開啟網址的時候,或是Youtube連結的時候,因為Android 發現,你手機安裝的App有哪些可以支援這些東西的瀏覽 所以,就可以使用甚麼東西來進行開啟 ...

  5. CSS製作動畫效果(Transition、Animation、Transform)

    CSS 2D Transforms https://www.w3schools.com/css/css3_2dtransforms.asp CSS 3D Transforms https://www. ...

  6. yii框架製作簡易RBAC權限管理

    控制器源碼 <?php namespace app\controllers; use yii; use yii\web\Controller; class PowerController ext ...

  7. [Xamarin] 啟動拍照並且儲存 (转帖)

    拍照對手機來說是很常用到的功能,許多App都基於在拍照上面,這篇文章主要大部分是在翻譯官方文件 (http://docs.xamarin.com/recipes/android/other_ux/ca ...

  8. JavaFX結合 JDBC, Servlet, Swing, Google Map及動態產生比例圖 (1):NetBeans 寫 Servlet (转帖)

    JavaFX結合 JDBC, Servlet, Swing, Google Map及動態產生比例圖 (1):NetBeans 寫 Servlet 功能:這支程式的主要功能是將 javafx 與 swi ...

  9. JavaScript從剪切板中獲取圖片並在光標處插入

    edit_content_text.addEventListener('paste', function (ev) {    var clipboardData, items, item;    co ...

随机推荐

  1. 让Asp.Net WebAPI支持OData查询,排序,过滤。(转)

    出处:http://www.cnblogs.com/liuzhendong/p/4233380.html 让Asp.Net WebAPI支持OData后,就能支持在url中直接输入排序,过滤条件了. ...

  2. docker-compose up启动又停止,需要加tty为true

    如果docker-compose.yml如下,则用docker-compose up -d启动起来的容器可能会立即停止. version: '2' services: mir-http-repo: i ...

  3. msfvenom木马生成+免杀+壳(实测并不能免杀)

    msfvenom 选项: -p, --payload 有效载荷使用.指定一个有效的自定义载荷 --payload-options 列出有效载荷的标准选项 -l, --list [type] 列出一个模 ...

  4. Register A Callback To Handle SQLITE_BUSY Errors(译)

    http://www.sqlite.org/c3ref/busy_handler.html留着自己看的. Register A Callback To Handle SQLITE_BUSY Error ...

  5. 12、Docker的网络--bridge

    单机网络 Bridge Network Host Network None Network 多机网络 Overlay Network 12.1 网络命名空间   启动一个容器 docker run - ...

  6. 18-11-1 Scrum Meeting 4

    1.会议照片 2.每人的工作 昨天完成的工作 完成测验页面,完善表单验证 完成制定计划,修改计划 关联单词数据,英语单词数据准备 今日计划工作 英文单词的图片准备 完善测验功能 3.项目燃尽图 前端页 ...

  7. Android-自定义控件-继承View与ViewGroup的初步理解

    继承View需要走的流程是: 1.构造实例化, public ChildView(Context context, @Nullable AttributeSet attrs) 2.测量自身的高和宽on ...

  8. 利用人工智能(Magpie开源库)给一段中文的文本内容进行分类打标签

    当下人工智能是真心的火热呀,各种原来传统的业务也都在尝试用人工智能技术来处理,以此来节省人工成本,提高生产效率.既然有这么火的利器,那么我们就先来简单认识下什么是人工智能吧,人工智能是指利用语音识别. ...

  9. 关于fastjson的一个坑:输出json时,bean对象属性首字母默认被小写

    fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴. 主要特点: 快速FAST: 比其它任何基于Java的解析器和生成器更快,包括jackson 强大:支 ...

  10. CDI(Weld)高级<4> Event(事件) (转)

    目录[-] 1. Event payload(事件的有效载入) 2. Event observers(event的观察者) 3. Event producers(event生产者) 4.Annotat ...