public Dialog Build(Activity activity, LoginConfig config)
        {
            var txtUser = new EditText(activity)
            {
                Hint      = config.LoginPlaceholder,
                InputType = InputTypes.TextVariationVisiblePassword,
                Text      = config.LoginValue ?? String.Empty,
            };

            txtUser.SetFilters(new[] { new InputFilterLengthFilter(40) }); // ユーザーID 40文字
            txtUser.SetSingleLine(true);

            var txtPass = new EditText(activity)
            {
                Hint      = config.PasswordPlaceholder ?? "*",
                InputType = InputTypes.TextVariationPassword
            };

            txtPass.SetFilters(new[] { new InputFilterLengthFilter(16) }); // パスワード 16文字
            txtPass.SetSingleLine(true);

            PromptBuilder.SetInputType(txtPass, InputType.Password);

            var layout = new LinearLayout(activity)
            {
                Orientation = Orientation.Vertical
            };

            txtUser.SetMaxLines(1);
            txtPass.SetMaxLines(1);

            layout.AddView(txtUser, ViewGroup.LayoutParams.MatchParent);
            layout.AddView(txtPass, ViewGroup.LayoutParams.MatchParent);

            return(new AlertDialog.Builder(activity, config.AndroidStyleId ?? 0)
                   .SetCancelable(false)
                   .SetTitle(config.Title)
                   .SetMessage(config.Message)
                   .SetView(layout)
                   .SetPositiveButton(config.OkText, (s, a) =>
                                      config.OnAction(new LoginResult(true, txtUser.Text, txtPass.Text))
                                      )
                   .SetNegativeButton(config.CancelText, (s, a) =>
                                      config.OnAction(new LoginResult(false, txtUser.Text, txtPass.Text))
                                      )
                   .Create());
        }