Как использовать элементы управления Android в Xamarin.Forms - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь создать форму Xamarin, в которой есть строка рейтинга Android и слайдер iOS. Ниже приведен файл XAML, который я использую. Я вижу ярлык, но не могу видеть строку рейтинга, когда пытаюсь запустить устройство на Android. Пожалуйста, помогите.

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:d="http://xamarin.com/schemas/2014/forms/design"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:ios="clr-namespace:UIKit;assembly=Xamarin.iOS;targetPlatform=iOS"
             xmlns:android="clr-namespace:Android.Widget;assembly=Mono.Android;targetPlatform=Android"
             xmlns:androidForms="clr-namespace:Xamarin.Forms;assembly=Xamarin.Forms.Platform.Android;targetPlatform=Android"
             mc:Ignorable="d"
             x:Class="XamrineTest.Page1">
    <StackLayout  BackgroundColor="Green" >
        <Label Text="Welcome to Page1!" BackgroundColor="Gray"/>
            <ios:UIDatePicker />
            <ios:UISlider MaxValue="10" Value="{Binding SlideValue}" />
            <ios:UIStepper />
            <ios:UISwitch />
        <android:RatingBar BackgroundColor="Lavender" HorizontalOptions="Center"
                                                Scale="0.4" 
                                    StarCount="5" Step="0.5" Margin="0" SelectedColor="Orange"
                                                   HeightRequest="40" UnSelectedColor="LightGray" Rate="{Binding Rating,Mode=TwoWay}">

        </android:RatingBar>
    </StackLayout>
</ContentPage>

1 Ответ

1 голос
/ 07 ноября 2019

Я думаю, что в вашем коде есть несколько проблем:

1. Пространство имен, которое вы использовали, неверно, просто измените его на:

 <androidWidget:RatingBar x:Arguments="{x:Static androidLocal:MainActivity.Instance}" >
 </androidWidget:RatingBar>

И используя следующее пространство имен:

xmlns:androidWidget="clr-namespace:Android.Widget;assembly=Mono.Android;targetPlatform=Android"

2. нам также необходим следующий код для инициализации androidWidget:RatingBar

   x:Arguments="{x:Static androidLocal:MainActivity.Instance}"

определения Instance в MainActivity кода Android:

 public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
    internal static MainActivity Instance { get; private set; }  // define Instance 

    protected override void OnCreate(Bundle bundle)
    {
        TabLayoutResource = Resource.Layout.Tabbar;
        ToolbarResource = Resource.Layout.Toolbar;

        base.OnCreate(bundle);
        Instance = this;// init Instance 
        global::Xamarin.Forms.Forms.Init(this, bundle);

        LoadApplication(new App());
    }
}

Для более подробной информации, вы можете проверить: https://docs.microsoft.com/en-us/xamarin/xamarin-forms/platform/native-views/xaml

И эта ссылка также включает в себя некоторые полезные образцы, вы можете обратиться к нему.

Обновление:

Да, вы также можете использовать x:Arguments="{x:Static androidForms:Forms.Context}", и следующий код работает правильно.

<android:RatingBar x:Arguments="{x:Static androidForms:Forms.Context}" NumStars="5" StepSize="1.0"  Rating="{Binding Rating,Mode=TwoWay}" />

Примечание:

Свойства, которые вы использовали в RatingBar, не существуют.

BackgroundColor="Lavender" HorizontalOptions="Center"
                                            Scale="0.4" 
                                StarCount="5" Step="0.5" Margin="0" SelectedColor="Orange"
                                               HeightRequest="40" UnSelectedColor="LightGray" Rate="{Binding Rating,Mode=TwoWay}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...