21

我有一个我正在为一家混凝土公司编写的 Android 应用程序,该应用程序将用于打卡进出。我使用一些微调器从下拉列表中选择工作地点和工作等内容,但我担心微调器中的项目太靠近,员工很难选择正确的项目。

我想在微调器中的项目之间留出更多空间,但不想经历制作自定义样式的所有麻烦,因为我真的希望微调器的外观和行为与默认值完全相同,除了只是有更多的填充,为此必须制作自定义样式需要做很多工作。

我可以进行任何简单的更改,例如设置微调器的某些属性吗?我尝试将微调器类型设置为对话框,但它只显示具有相同间距的列表,只是没有附加到微调器控件。

4

5 回答 5

28

我相信 Pragnani 的回答是正确的,但这就是我实际实施它的方式......

- 在 RES/layout 中,创建了一个 XML 布局,其中只有一个 textview,如下所示。此文本视图具有我想要的自定义大小/填充。

spinner_row.xml

  <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/cust_view"
        android:minWidth="246dp"
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:gravity="left|center_vertical"
        android:textColor="@android:color/black"    
        android:textSize="20sp"
        android:paddingLeft="4dp"
        android:textIsSelectable="false"/>

然后在我将数据加载到微调器的活动中,当我为微调器创建 ArrayAdapter 时,我将自定义 textview 作为第二个参数传递给 ArrayAdapter 构造函数。

Spinner spinClockInWorkSite = (Spinner)findViewById(R.id.spinClockInWorkSite);
ArrayAdapter spinClockInWorkSiteAdapter = new ArrayAdapter(this, R.layout.spinner_row, this.workSiteList);
spinClockInWorkSite.setAdapter(spinClockInWorkSiteAdapter);

所以现在微调器使用我在 spinner_row.xml 中为列表中的每个项目定义的自定义文本视图。

这最终比玩这种风格更直接地满足了我的需求。

于 2013-03-28T17:48:52.077 回答
21

如果您想提供令人满意的间距,那么如果所有这些 XML 和所有,您可以轻松地在微调适配器中使用“simple_spinner_dropdown_item”。

String [] dataList = new String[]{"Select","A","B","C","D","E"};
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_dropdown_item, dataList);
        spinner.setAdapter(dataAdapter);

它对我有用。

于 2015-04-23T06:11:04.727 回答
9

除非您想要一个真正特定的间距,否则我会使用其中一种内置布局。

simple_spinner_item = No line space.
simple_spinner_dropdown_item = 1 line space.
simple_dropdown_item_1line = 1.5 line space.

这些以及更多可以在 R.class 中找到

于 2019-02-05T02:17:46.103 回答
7

试试这个,在这里您不是在更改微调器样式,而是通过设置微调器项目的样式来为微调器项目添加您想要的额外功能。

<style name="spinnerStyle"  parent="@android:style/Widget.TextView.SpinnerItem">
       <item name="android:padding">5sp</item>
    </style>

并使用样式属性将样式应用于您的微调器

 style="@style/spinnerStyle"
于 2013-03-23T21:29:49.770 回答
2
adapter=new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line, 
ArrayList);
于 2018-06-23T16:42:53.540 回答