在 Appcelerator 中使用 Android 没有 useSpinner 的选择器

Using Android Picker without useSpinner in Appcelerator

此处显示 http://docs.appcelerator.com/platform/latest/#!/api/Titanium.UI.Picker useSpinner 属性 已弃用。 那么如何正确使用选择器呢?

当我在 Android 中使用没有 useSpinner 属性 的选择器时,它没有显示(左选择器)。当我点击选择器(绿色边框)时,值显示出来并且工作正常。

将 useSpinner 设置为 true,它会正确显示(右)。看截图。

选择器的可见性最初在 .xml 中设置为 false。当用户点击相应的标签时,选择器变为可见。这在 iOS.

中工作正常

其实这并不是什么错误的行为。红色边框选择器已经过时,你几乎不会在任何应用程序中看到它,即使是原生应用程序。

标准选择器是左边的选择器,它最初显示所选值或第一个值作为默认值。据我所知,你不能通过.tss文件直接更改左选择器的文本颜色。


相反,您可以使用自定义主题并将其用于包含选择器的window。

这是一个简单的示例,说明如何将主题应用到选择器和其他元素。

  • 将此 xml 代码保存在一个文件中(随便命名,比方说 theme.xml)。
  • 将此文件放在以下位置(如果不存在则创建文件夹)。

Your_Project_Folder -> 应用程序 -> 平台 -> android -> 资源 -> 值 -> 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>

现在,您可以将此主题全局用于所有 windows,或用于特定 window。

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
}