Xamarin Android таможенные штаты не работают после обновления до Visual Studio 2019 - PullRequest
1 голос
/ 14 февраля 2020

Я пытаюсь обновить свой проект Xamarin. Android для цели Android 10 и Visual Studio 2019, но есть ошибка, которую я не могу устранить.

У меня есть пользовательские состояния для некоторых компонентов, но их условие игнорируется и всегда показывает "true", кроме случаев, когда другое состояние по умолчанию в android активно и находится выше в иерархии. Вот пример кода:

Attrs. xml

<?xml version="1.0" encoding="utf-8" ?>
<resources>
  <declare-styleable name="CustomStates">
    <attr name="state_error" format="boolean"/>
  </declare-styleable>
</resources>

CustomButton. xml

<?xml version="1.0" encoding="UTF-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:app="http://schemas.android.com/apk/res-auto/XXXX.XXXX.XXXX">

  <item android:state_enabled="false"
        android:drawable="@drawable/DisabledButton"/>    

  <item app:state_error="true"
        android:drawable="@drawable/ErrorButton"/>  

  <item android:state_pressed="true"
        android:drawable="@drawable/PressedButton"/>

  <item android:drawable="@drawable/DefaultButton"/>

</selector>

CustomButton.cs

public class CustomButton : ImageButton
{
    private static int[] errorState = { Resource.Attribute.state_error };
    private bool error;

    ...

    public bool Error
    {
        get
        {
            return this.error;
        }

        set
        {
            this.error = value;
            this.RefreshDrawableState();
        }
    }

    public override int[] OnCreateDrawableState(int extraSpace)
    {
        int[] state = base.OnCreateDrawableState(extraSpace + 1);

        if (this.error)
        {                
            LoginButton.MergeDrawableStates(state, errorState);
        }

        return state;
    }
}

Мое приложение всегда показывает @ drawable / ErrorButton, даже если для свойства Error установлено значение false. Единственный случай, когда @ drawable / ErrorButton не отображается, это когда кнопка отключена (правильно отображается @ drawable / DisabledButton).

Этого не происходит в Visual Studio 2017 с таргетингом Android 9. Я выполнение теста на одних и тех же устройствах (Android 5.1 и Android 7.1).

...