Как увеличить размер формы Xamarin элемента управления переключателем?

Недавно я только начал работать с Xamarin Forms, и у меня появилась задача переключить рабочий проект iOS на Droid. Это мультиплатформенный проект, поэтому я создаю переключатель в общем проекте, но пытаюсь управлять его стилем в .Droid styles.xml или в пользовательском рендерере. Мне нужно, чтобы элемент управления был побольше для планшетов.

Используя styles.xml, я смог изменить ширину элемента управления переключателем, используя эту строку:

<item name="switchMinWidth">120dp</item>

Но, насколько мне известно, нельзя изменить высоту элемента управления таким образом. Я пробовал использовать настраиваемое средство визуализации и использовал методы SetHeight, SetMinHeight и SetMinimumHeight элемента управления (Android.Switch.Widget), но ничего не работает.

Вот как сейчас выглядят переключатели:

https://imgur.com/XIPp6vV

Я также пробовал выполнить HeightRequest в самом xaml, но он не меняет фактическую высоту элемента управления. Что я могу сделать, чтобы эти переключатели стали немного выше?


person Ryan    schedule 01.11.2017    source источник
comment
Вы решили свою проблему?   -  person Eren Shen    schedule 06.11.2017


Ответы (1)


Как увеличить размер формы Xamarin элемента управления переключателем?

Switch Высота контролируется <switch android:track="@drawable/shape_mythumb".../>, а высота дорожки определяет общую высоту Switch. Итак, вы можете добавить это свойство в свой собственный SwitchRenderer:

public class MySwitchRenderer : SwitchRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Switch> e)
    {
        base.OnElementChanged(e);
        if(Control != null)
        {
            Control.SetTrackResource(Resource.Drawable.track);
        }
    }
}

Вам нужен собственный макет Track, вы могли бы рисовать форма все, что вы хотите.

Пример:

track.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item
      android:drawable="@drawable/switch_track_on"
      android:state_checked="true"/>

  <item
      android:drawable="@drawable/switch_track_off"
      android:state_checked="false"/>

</selector>

switch_track_on.xml

<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

  <corners
       android:radius="15dp" />
  <size
       android:width="75dp"
       android:height="25dp" />
  <solid
      android:color="#6decacec" />

</shape>

switch_track_off.xml

<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

  <corners
      android:radius="15dp" />
  <size
      android:width="75dp"
      android:height="25dp" />
  <solid
      android:color="#6db3b1b3" />
</shape>
person Eren Shen    schedule 02.11.2017
comment
Огромное спасибо. Все, что мне нужно было сделать, это добавить SetThumbResource в Custom Renderer и файлы xml для большого пальца, чтобы они шли вместе с трековыми. Идеально! - person Ryan; 07.11.2017