Создайте гиперссылку с помощью Xamarin.Forms(xaml и С#)
Я относительно неопытный профессиональный программист (мне всего 20 лет). Поэтому я заранее извиняюсь, так как могут быть некоторые более крупные концепции, которые я пока не полностью понимаю. Надеюсь, это подходящий вопрос, потому что час работы в поисковых системах не мог мне помочь.
В основном я хочу создать гиперссылку в Xamarin.Forms, используя класс label. В принципе, я хочу использовать следующую ссылку, чтобы отправить пользователя на google.com в веб-браузере:
<Label Text="http://www.google.com/" />
Я не могу найти что-либо в API Xamarin Forms об этом, и в Интернете есть неопределенная и ограниченная информация по этой теме в Xamarin.Forms.
Возможно ли это? Если да, может кто-нибудь, пожалуйста, назовите меня в правильном направлении? Спасибо заранее любому, кто отвечает.
Ответы
Ответ 1
Вы не можете этого сделать, потому что ярлыки по умолчанию не отвечают на ввод пользователя, но вы можете добиться чего-то подобного с жестами
Label label = new Label();
label.Text = "http://www.google.com/";
var tapGestureRecognizer = new TapGestureRecognizer();
tapGestureRecognizer.Tapped += (s, e) => {
Device.OpenUri( new Uri((Label)s).Text);
};
label.GestureRecognizers.Add(tapGestureRecognizer);
Ответ 2
Я сделал этот маленький класс для обработки:
public class SimpleLinkLabel : Label
{
public SimpleLinkLabel(Uri uri, string labelText = null)
{
Text = labelText ?? uri.ToString();
TextColor = Color.Blue;
GestureRecognizers.Add(new TapGestureRecognizer { Command = new Command(() => Device.OpenUri(uri)) });
}
}
И немного больше, если вы хотите подчеркнуть это:
public class LinkLabel : StackLayout
{
private SimpleLinkLabel label;
public LinkLabel(Uri uri, string labelText = null, bool underlined = true)
{
// Remove bottom padding
Padding = new Thickness(Padding.Left, Padding.Top, Padding.Right, 0);
VerticalOptions = LayoutOptions.Center;
Children.Add(label = new SimpleLinkLabel(uri, labelText));
if (underlined)
Children.Add(new BoxView { BackgroundColor = Color.Blue, HeightRequest = 1, Margin = new Thickness(0, -8, 0, 0) });
}
public TextAlignment HorizontalTextAlignment { get { return label.HorizontalTextAlignment; } set { label.HorizontalTextAlignment = value; } }
}
Последний класс, вдохновленный этим сообщением: как подчеркнуть в форматах xamarin
Изменить: у XLabs есть HyperLinkLabel.
Ответ 3
используйте кнопку и xamarin.forms.theme nuget
<Button StyleClass = "Link"/>
https://developer.xamarin.com/guides/xamarin-forms/user-interface/themes/light/