在没有自定义样式的Android Spinner中的项目之间添加更多空间?

时间:2013-03-23 20:35:28

标签: java android spinner android-spinner

我有一个Android应用程序我正在为一家混凝土公司写作,它将用于计时和输出。我已经使用了一些纺纱工人来选择工作地点和工作中的东西,但是我担心纺纱工具中的物品太靠近了,员工很难选择合适的物品。

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

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

5 个答案:

答案 0 :(得分:25)

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

- 在RES / layout中,创建了一个只包含textview的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中为列表中的每个项目定义的自定义textview。

这最终使我的需求更直接,而不是玩风格。

答案 1 :(得分:15)

如果你想提供令人满意的间距,那么相反,如果所有这些XML和所有, 您可以轻松使用&#34; simple_spinner_dropdown_item&#34;在微调适配器。

喜欢

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);

它对我有用。

答案 2 :(得分:5)

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

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

使用style attribue

将样式应用于您的微调器
 style="@style/spinnerStyle"

答案 3 :(得分:1)

adapter=new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line, 
ArrayList);

答案 4 :(得分:0)

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

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

这些和更多内容都可以在R.class中找到