Использование Android Picker без useSpinner в Appcelerator

Здесь написано http://docs.appcelerator.com/platform/latest/, что свойство useSpinner устарело. Как тогда правильно использовать сборщик?

Когда я использую средство выбора в Android без свойства useSpinner, оно не отображается (средство выбора слева). Когда я нажимаю на кнопку выбора (зеленая рамка), отображаются значения, и они работают правильно.

Если для useSpinner установлено значение true, оно отображается правильно (справа). смотрите скриншот.

Видимость средства выбора изначально в.xml установлена ​​в false. Когда пользователь нажимает на соответствующие метки, сборщик становится видимым. Это прекрасно работает в iOS.

1 ответ

Решение

На самом деле, это не любое неправильное поведение. Средство выбора красной границы устарело, и вы вряд ли увидите его ни в одном приложении, даже в нативном.

Стандартный инструмент выбора - левый, который изначально показывает выбранное значение или первое значение по умолчанию. Насколько я знаю, вы не можете напрямую изменить цвет текста левого средства выбора через файлы.tss.


Вместо этого вы можете использовать пользовательские темы и использовать его для того окна, которое содержит средства выбора.

Вот краткий пример того, как вы можете применять темы к средствам выбора и другим элементам.

  • Сохраните этот XML-код в файле (назовите его как угодно, скажем, theme.xml).
  • Поместите этот файл в расположении ниже (создайте папки, если не существует).

Your_Project_Folder -> приложение -> платформа -> android -> res -> values ​​-> theme.xml

<?xml version="1.0" encoding="utf-8"?>

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="PickerTheme" parent="@style/Theme.AppCompat.Light">
        <item name="android:spinnerItemStyle">@style/SpinnerItem</item>

        <!-- Activate this for Spinners/Plain Pickers in selected/popup state -->
        <!-- <item name="android:spinnerDropDownItemStyle">@style/SpinnerDropDownItem</item> -->

        <!-- Override Date Dialog -->
        <item name="android:datePickerDialogTheme">@style/MyDatePickerDialogTheme</item>

        <!-- Override Time Dialog -->
        <item name="android:timePickerDialogTheme">@style/MyTimePickerDialogTheme</item>
    </style>

    <!-- Use this style for Spinners/Plain Pickers in default state -->
    <style name="SpinnerItem">
        <item name="android:textColor">#000000</item>
    </style>

    <style name="SpinnerDropDownItem">
        <item name="android:textColor">@color/primary_dark</item>
        <item name="android:background">@color/accent</item>
    </style>


    <style name="MyDatePickerDialogTheme" parent="android:Theme.Material.Light.Dialog">
        <item name="colorAccent">@color/primary</item>
        <item name="android:textColorSecondary">#000000</item>
    </style>

    <style name="MyTimePickerDialogTheme" parent="android:Theme.Material.Light.Dialog">
        <item name="colorAccent">@color/primary</item>
        <item name="android:textColorSecondary">#000000</item>
    </style>
</resources>

Теперь вы можете использовать эту тему глобально для всех окон или для конкретного окна.

1 - Используя тему для всего приложения, используйте это в файле tiapp.xml.

<android xmlns:android="http://schemas.android.com/apk/res/android">
    <manifest>
        <application android:theme="@style/PickerTheme">
            ....
        </application>
    </manifest>
</android>

2 - Использование темы в файле.tss

"Window[platform=android]": {
    theme : 'PickerTheme',
    backgroundColor : 'white',
    windowSoftInputMode : Ti.UI.Android.SOFT_INPUT_STATE_ALWAYS_HIDDEN | Titanium.UI.Android.SOFT_INPUT_ADJUST_RESIZE
}
Другие вопросы по тегам