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

     

     

  • 相关阅读:
    ZOJ 3332 Strange Country II
    ZOJ 3331 Process the Tasks(双塔DP)
    ZOJ 3326 An Awful Problem(模拟)
    HDU 1796 How many integers can you find(容斥原理)
    HDU 4059 The Boss on Mars(容斥原理)
    HDU 4135 Co-prime(容斥原理)
    HDU 5677 ztr loves substring(回文串加多重背包)
    CodeForces 668B Little Artem and Dance
    CodeForces 667A Pouring Rain
    Java实现 LeetCode 764 最大加号标志(暴力递推)
  • 原文地址:https://www.cnblogs.com/whatthehell/p/3444755.html
Copyright © 2011-2022 走看看