在 Appcelerator 中使用不带 useSpinner 的 Android Picker

use*_*957 1 picker appcelerator

在这里它读取http://docs.appcelerator.com/platform/latest/#!/api/Titanium.UI.Picker表示 useSpinner 属性已被弃用。那我该如何正确使用选择器呢?

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

useSpinner 设置为 true 时,它​​会正确显示(右)。看截图。在此处输入图片说明

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

Pra*_*ini 5

实际上,这并不是任何错误的行为。红色边框选择器已经过时,您几乎不会在任何应用程序中看到它,甚至是原生应用程序。

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


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

这是一个关于如何将主题应用于选择器和其他元素的快速示例。

  • 将此 xml 代码保存在一个文件中(将其命名为任意名称,例如 theme.xml)。
  • 将此文件放在以下位置(如果不存在则创建文件夹)。

Your_Project_Folder -> app -> platform -> 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>
Run Code Online (Sandbox Code Playgroud)

现在,您可以对所有窗口或特定窗口全局使用此主题。

1 - 为整个应用程序使用主题,在 tiapp.xml 文件中使用它。

<android xmlns:android="http://schemas.android.com/apk/res/android">
    <manifest>
        <application android:theme="@style/PickerTheme">
            ....
        </application>
    </manifest>
</android>
Run Code Online (Sandbox Code Playgroud)

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
}
Run Code Online (Sandbox Code Playgroud)