[Xamrin]Layout Inflater.Inflateを使用して予め設計されたLayoutにロードして使用します.

10628 ワード

開発する時、必ずいくつかのものを部品に設計して、何度も使うことができます.今日は簡単な方法を記録して、事前に作ったLayoutに載せて、事件のサンプルを紹介します.
<?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はcustContinerのLinear Layoutです.予約したLayoutはInflateにここにいます.  客制Layout「ボタンが押された時に、Inflateが客制化された素子からcustContinerまで、さらにこの素子にある事件を紹介します.これは私が客制化したLayoutです. 
CusstControl Layout.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機能はbtnAsignTextをクリックしてほしいです.Toastができます.  edit TextContent  私達はどのようにメインActivityでCust Control LayoutをcustContinerにロードし、イベントを与えるかを見てみます.
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();
                    };
 
 
            };
        }
    }
}
 
結果:
ロードの2番目のボタンを押すと、
 
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