/ / शीर्ष / नेविगेशन बार में एक सर्चबेर रखने - xamarin, xamarin.forms

SearchBar को शीर्ष / नेविगेशन बार में रखकर - xamarin, xamarin.forms

एक फॉर्म प्रोजेक्ट में, क्या ए रखना संभव हैSearchBar ऐसा है जो ऐप के टॉप / नेविगेशन बार में दिखाई देता है? जो कुछ मैं हासिल करना चाहता हूं वह एंड्रॉइड यूट्यूब ऐप की तर्ज पर है, बस क्रॉस-प्लेटफॉर्म:

यहां छवि विवरण दर्ज करें

उत्तर:

उत्तर № 1 के लिए 4

ऐसा करने के लिए, आपको अपने पृष्ठ के लिए एक रेंडरर लिखना चाहिए

IOS के लिए मेरा कार्यान्वयन है (कस्टम "सर्चफिल्ड" के साथ)

using CoreGraphics;
using Foundation;
using MyControls;
using MyRenderer;
using UIKit;
using Xamarin.Forms;

[assembly: ExportRenderer(typeof(MySearchContentPage), typeof(MySearchContentPageRenderer))]

namespace IOS.Renderer
{
using Xamarin.Forms.Platform.iOS;

public class MySearchContentPageRenderer : PageRenderer
{
public override void ViewWillAppear(bool animated)
{
base.ViewWillAppear(animated);

SetSearchToolbar();
}

public override void WillMoveToParentViewController(UIKit.UIViewController parent)
{
base.WillMoveToParentViewController(parent);

if (parent != null)
{
parent.NavigationItem.RightBarButtonItem = NavigationItem.RightBarButtonItem;
parent.NavigationItem.TitleView = NavigationItem.TitleView;
}
}

private void SetSearchToolbar()
{
var element = Element as MySearchContentPage;
if (element == null)
{
return;
}

var width = NavigationController.NavigationBar.Frame.Width;
var height = NavigationController.NavigationBar.Frame.Height;
var searchBar = new UIStackView(new CGRect(0, 0, width * 0.85, height));

searchBar.Alignment = UIStackViewAlignment.Center;
searchBar.Axis = UILayoutConstraintAxis.Horizontal;
searchBar.Spacing = 3;

var searchTextField = new MyUITextField();
searchTextField.BackgroundColor = UIColor.FromRGB(239, 239, 239);
NSAttributedString strAttr = new NSAttributedString("Search", foregroundColor: UIColor.FromRGB(146, 146, 146));
searchTextField.AttributedPlaceholder = strAttr;
searchTextField.SizeToFit();

// Delete button
UIButton textDeleteButton = new UIButton(new CGRect(0, 0, searchTextField.Frame.Size.Height + 5, searchTextField.Frame.Height));
textDeleteButton.Font = UIFont.FromName("FontAwesome", 18f);
textDeleteButton.BackgroundColor = UIColor.Clear;
textDeleteButton.SetTitleColor(UIColor.FromRGB(146, 146, 146), UIControlState.Normal);
textDeleteButton.SetTitle("uf057", UIControlState.Normal);
textDeleteButton.TouchUpInside += (sender, e) =>
{
searchTextField.Text = string.Empty;
};

searchTextField.RightView = textDeleteButton;
searchTextField.RightViewMode = UITextFieldViewMode.Always;

// Border
searchTextField.BorderStyle = UITextBorderStyle.RoundedRect;
searchTextField.Layer.BorderColor = UIColor.FromRGB(239, 239, 239).CGColor;
searchTextField.Layer.BorderWidth = 1;
searchTextField.Layer.CornerRadius = 5;
searchTextField.EditingChanged += (sender, e) =>
{
element.SetValue(MySearchContentPage.SearchTextProperty, searchTextField.Text);
};

searchBar.AddArrangedSubview(searchTextField);

var searchbarButtonItem = new UIBarButtonItem(searchBar);
NavigationItem.SetRightBarButtonItem(searchbarButtonItem, true);

NavigationItem.TitleView = new UIView();

if (ParentViewController != null)
{
ParentViewController.NavigationItem.RightBarButtonItem = NavigationItem.RightBarButtonItem;
ParentViewController.NavigationItem.TitleView = NavigationItem.TitleView;
}
}
}
}

इसके अलावा, कुछ चर्चा है:ज़ामरीन फॉर्म के नेविगेशनबार में दृश्य कैसे शामिल करें?

यहां छवि विवरण दर्ज करें

मुझे उम्मीद है, आप मुख्य विचार को समझ गए होंगे।