zoukankan      html  css  js  c++  java
  • [Xamarin] 使用LayoutInflater.Inflate載入預先設計好的Layout並使用 (转帖)

    開發的時候,一定會把一些東西設計成元件,並且可以多次使用,今天紀錄一篇比較簡單的方法,可以載入事先做好的Layout 並且給予事件 介紹一下範例: 2013-07-22_194734
    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/btn1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Inflate 客製化 Layout" />
        <LinearLayout
            android:minWidth="25px"
            android:minHeight="25px"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/relativeContainer"
            android:orientation="vertical" />
    </LinearLayout>

    紅色框起來的部分,就是我預留給客製化Layout放的地方,id 為 custContainer 的 LinearLayout 讓自訂的Layout可以被Inflate(打氣)在這地方 "Inflate  客製 Layout" 按鈕被按下時,會Inflate 一個客製化的元件至custContainer,並且給愈該元件該有的事件 介紹一下,這是我客製化的Layout 

    2013-07-22_195333
    CustControlLayout.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"
        android:minWidth="25px"
        android:minHeight="25px">
        <Button
            android:text="我是Control的按鈕"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/btnAssignText" />
        <EditText
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="我是Control的內容"
            android:id="@+id/editTextContent" />
    </LinearLayout>

    這是我設計的客製化Layout 功能是我希望btnAssignText 被點擊之後,可以Toast  editTextContent  我們來看看,如何在主Activity 中將 CustControlLayout 載入到 custContainer 中並給予事件

    using System;
    using Android.App;
    using Android.Widget;
    using Android.OS;
     
    namespace TestInflate
    {
        [Activity(Label = "TestInflate", MainLauncher = true, Icon = "@drawable/icon")]
        public class Activity1 : Activity
        {
            protected override void OnCreate(Bundle bundle)
            {
                base.OnCreate(bundle);
     
                // Set our view from the "main" layout resource
                SetContentView(Resource.Layout.Main);
     
                var btn1 = FindViewById<Button>(Resource.Id.btn1);
     
                var custContainer = FindViewById<LinearLayout>(Resource.Id.custContainer);
     
                btn1.Click += delegate
                {
                    //透過 LayoutInflater 將 CustControlLayout 打氣在 custContainer 容器中
                    LayoutInflater.Inflate(Resource.Layout.CustControlLayout, custContainer);
     
                    var btnAssignText = FindViewById<Button>(Resource.Id.btnAssignText);
                    //重新給予一個亂數的Id 不然啟動後事件都會是同一個
                    btnAssignText.Id = new Random().Next(5000, int.MaxValue);
     
                    var editTextContent = FindViewById<EditText>(Resource.Id.editTextContent);
                    //重新給予一個亂數的Id 不然啟動後事件都會是同一個
                    editTextContent.Id = new Random().Next(5000, int.MaxValue);
     
                    btnAssignText.Click += delegate
                        {
                            Toast.MakeText(this, editTextContent.Text, ToastLength.Short).Show();
                        };
     
     
                };
            }
        }
    }
     

    結果:

    Screenshot_2013-07-22-19-47-09
    載入的第二個按下時:

    Screenshot_2013-07-22-19-47-13

     

    References: http://lp43.blogspot.tw/2010/06/xmllayoutviewlayoutinflater.html http://developer.android.com/reference/android/view/LayoutInflater.html
    http://blog.csdn.net/hwy584624785/article/details/6695301

     

     

  • 相关阅读:
    【暑假】[深入动态规划]UVa 1380 A Scheduling Problem
    【暑假】[深入动态规划]UVa 12170 Easy Climb
    【暑假】[深入动态规划]UVa 10618 The Bookcase
    【暑假】[深入动态规划]UVa 10618 Fun Game
    【暑假】[深入动态规划]UVa 10618 Fixing the Great Wall
    【暑假】[深入动态规划]UVa 1627 Team them up!
    【暑假】[深入动态规划]UVa 10618 Tango Tango Insurrection
    【暑假】[深入动态规划]UVa 1412 Fund Management
    【暑假】[实用数据结构]UVAlive 4670 Dominating Patterns
    UML类图关系大全
  • 原文地址:https://www.cnblogs.com/whatthehell/p/3444755.html
Copyright © 2011-2022 走看看