【问题标题】:What is an Alternative to the UIPickerView from IOS in android?什么是 android 中 IOS 的 UIPickerView 的替代方案?
【发布时间】:2016-10-18 11:38:03
【问题描述】:

我正在尝试在 android 中重现 IOS UIPickerView 功能。

在IOS中你可以设置这个UIPickerView作为键盘的输入类型。我需要这种相同类型的交互,但在 android 中。

更新: 当我说输入类型时,我的意思是 UIPickerView 只是替换了键盘视图。因此,如果单击文本字段,则会打开 UIPickerView 而不是键盘。希望能解决问题!

【问题讨论】:

  • 你没有在这里设置输入视图..你可以用时间选择器打开一个对话框片段。
  • 好吧,这是有道理的。但是,我可以用除时间以外的不同值填充时间选择器吗?例如,我想将英尺存储在左侧,将英寸存储在右侧。 TimePickerDialog 有可能吗?
  • 你可能需要在这里使用微调器

标签: java android ios spinner uipickerview


【解决方案1】:

不知道你的意思是什么

作为键盘的输入类型

但与该图像等效的 android 将是 TimePickerDialog

更新

如果您想要选择器类型的 UI,您有 3 个选择器选项,TimePicker、DatePicker 或 NumberPicker 显然前 2 个已退出,因此您只剩下带有数字选择器的 NumberPicker,您可以填充它用你想要的数字(英寸),然后是另一个英尺

我建议您快速查看一下 Pickers 文章 https://developer.android.com/guide/topics/ui/controls/pickers.html

【讨论】:

    【解决方案2】:

    我建议使用多个选择器制作一个布局,这样您就可以拥有尽可能多的选择器,并使用您需要的任何值来初始化它们。

    下面的布局将为您提供两个并排的微调器,类似于 iOS UIPickerView。

    我在底部发布了一个指向我的 github 存储库的链接,并附有一个简单的示例,展示了如何使用 3 个微调器,一个用于几分钟、几小时和几天,应该可以帮助您(或者来自 iOS 的任何其他有相同问题的人)可以作为入门的基础。

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent" android:layout_height="match_parent"
        android:id="@+id/multispinner">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:paddingLeft="10dp"
            android:paddingRight="10dp">
    
            <Spinner
                android:id="@+id/spinner1"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:layout_marginLeft="5dp"/>
    
            <Spinner
                android:id="@+id/spinner2"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:layout_marginLeft="5dp" />
    
        </LinearLayout>
    
    </LinearLayout>
    

    My simple multiple picker example

    【讨论】:

      【解决方案3】:

      如果您正在寻找类似的感觉,您可以使用数字选择器。只需确保将个性化样式添加为主题(否则它将以您的应用程序主题为默认主题)并将格式化程序添加到数字选择器。您会在第一次渲染时遇到一些麻烦(在您滚动之前它不会显示第一个值),只需使用此处提供的解决方案: Android NumberPicker with Formatter doesn't format on first rendering

      你也可以像图片一样把它放到cardview中,看起来很整齐。 formatted number picker screenshot

      Ps.:实际上你可以修改几个字段,但你必须访问类字段/方法。为此,请按照此示例代码进行操作。

      public void setNumberPickerDivider (NumberPicker picker) {
          Field[] fields = NumberPicker.class.getDeclaredFields();
          for(Field f:fields){
              if(f.getName().equals("mSelectionDividerHeight")){
                  f.setAccessible(true);
                  try {
                      f.set(picker,1);
                  } catch (IllegalAccessException e) {
                      e.printStackTrace();
                  }
                  break;
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2013-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-13
        • 2018-12-01
        • 1970-01-01
        相关资源
        最近更新 更多