C# で Android開発

Javaではこうだけど、Xamarinではこう、という正解がわからないので、合っているのか自信がない。エラーにはなってないけど。

7.3.2 直接 setOnClickListener() に匿名クラスを渡す

先の例と同様、setOnClickListener() が分からないので Click イベントに追加する。

using Android.App;
using Android.Widget;
using Android.OS;

namespace ManyButton2
{
    [Activity(Label = "ManyButton2", MainLauncher = true, Icon = "@drawable/icon")]
    public class MainActivity : Activity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView (Resource.Layout.Main);
            var tv = FindViewById<TextView>(Resource.Id.textView);

            FindViewById<Button>(Resource.Id.button1).Click += (o, e) => {
                tv.Text = this.Resources.GetString(Resource.String.Btn1Tap);
            };

            FindViewById<Button>(Resource.Id.button2).Click += (o, e) => {
                tv.Text = this.Resources.GetString(Resource.String.Btn2Tap);
            };

            FindViewById<Button>(Resource.Id.button3).Click += (o, e) => {
                tv.Text = this.Resources.GetString(Resource.String.Btn3Tap);
            };
        }
    }
}

f:id:yossk:20170405232212p:plain

7.4.1 Java プログラムでビューを配置する

Java でいう LinearLayout.VERTICAL は Orientation.Vertical でよいのかな?

using Android.App;
using Android.Widget;
using Android.OS;
using Android.Views;
using static Android.Views.ViewGroup;

namespace LayoutCSharp
{
    [Activity(Label = "LayoutCSharp", MainLauncher = true, Icon = "@drawable/icon")]
    public class MainActivity : Activity, View.IOnClickListener
    {
        private TextView textView;

        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            var testLayout = new LinearLayout(Application);
            testLayout.LayoutParameters = new LayoutParams(
                LayoutParams.WrapContent,
                LayoutParams.WrapContent
            );
            testLayout.Orientation = Orientation.Vertical;
            SetContentView(testLayout);

            textView = new TextView(this);
            textView.Text = "";
            textView.LayoutParameters = new LayoutParams(
                LayoutParams.WrapContent,
                LayoutParams.WrapContent
            );
            testLayout.AddView(textView);

            var button = new Button(this);
            button.Text = "Button";
            button.LayoutParameters = new LayoutParams(
                LayoutParams.WrapContent,
                LayoutParams.WrapContent
            );
            button.SetOnClickListener(this);
            testLayout.AddView(button);
        }

        public void OnClick(View v)
        {
            textView.Text = "Button Pushed.";
        }
    }
}

f:id:yossk:20170405232228p:plain