Круговой флажок на android в формах Xamarin - PullRequest
0 голосов
/ 19 марта 2020

Кто-нибудь знает, как сделать пользовательский рендерер для флажка форм Xamarin? Я хочу, чтобы флажок был круглым на android устройствах, как будто они на iOS.

Я использую Xamarin Forms 4.3.

1 Ответ

1 голос
/ 19 марта 2020

Вот Первое решение Использование библиотеки:

Ваше решение Здесь .

, в котором вы можете изменить свою форму в соответствии с вашими потребностями .

здесь ссылка Gihub как Здесь

Здесь Второе решение в соответствии с вашими потребностями здесь - флажок Renderer in Ellipse Shape.

в Xaml,

<CheckBox/>

в Android Project, сначала создайте новый файл. я назвал его CheckboxRenderer.cs

установить это перед пространством имен:

[assembly: ExportRenderer(typeof(Xamarin.Forms.CheckBox), typeof(CheckboxRenderer))]

вот мой файл класса,

public class CheckboxRenderer : ViewRenderer<Xamarin.Forms.CheckBox, Android.Widget.CheckBox>
{
    private Android.Widget.CheckBox checkBox;

    protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.CheckBox> e)
    {
        base.OnElementChanged(e);
        var model = e.NewElement;
        checkBox = new Android.Widget.CheckBox(Context);
        checkBox.SetButtonDrawable(Resource.Drawable.custom_checkbox);
        checkBox.Tag = this;
        SetNativeControl(checkBox);
    }
}

Создать эти 3 xml файл в папке Drawble,

1) флажок custom_checkbox. xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
  <item android:state_checked="true"
      android:drawable="@drawable/checked" />
  <item android:state_pressed="true"
      android:drawable="@drawable/checked" />
  <item android:state_pressed="false"
      android:drawable="@drawable/unchecked" />
</selector>

2) проверено. xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_checked="true">
    <layer-list>
      <item>
        <shape android:shape="oval">
          <corners android:radius="1dp" />
          <stroke
              android:width="1dp"
              android:color="#777" />
          <gradient
              android:startColor="#990000"
              android:centerColor="#990000"
              android:endColor="#990000"
              android:angle="270" />
          <size
              android:width="30dp"
              android:height="30dp" />
        </shape>
      </item>

      <item
          android:width="8dp"
          android:height="2dp"
          android:top="20dp"
          android:left="6dp">
        <rotate
            android:fromDegrees="45">
          <shape android:shape="rectangle">
            <solid android:color="#fff"/>
          </shape>
        </rotate>
      </item>

      <item
          android:width="19dp"
          android:height="2dp"
          android:top="16dp"
          android:left="9dp">
        <rotate
            android:fromDegrees="-45">
          <shape android:shape="rectangle">
            <solid android:color="#fff"/>
          </shape>
        </rotate>
      </item>
    </layer-list>
  </item>

</selector>

3) не проверено. xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
  <corners android:radius="1dp" />
  <stroke
      android:width="1dp"
      android:color="#777" />
  <gradient
      android:startColor="#990000"
      android:centerColor="#990000"
      android:endColor="#990000"
      android:angle="270" />
  <size
      android:width="30dp"
      android:height="30dp" />
</shape>

ооо готово ... вы получите вывод, подобный этому,

UnChecked Checked

Надеюсь, что это hepls.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...