我有一个正在为Concrete公司编写的Android应用程序,该应用程序将用于时钟输入和输出。我曾经使用过一些微调器,从下拉菜单中选择诸如“工作地点”和“工作”之类的内容,但我担心微调器中的项目彼此之间过于紧密,以至于员工难以选择正确的项目。
我想在微调器中的项目之间留出更多的空间,但是不想经历制作自定义样式的所有麻烦,因为实际上我希望微调器的外观和行为与默认样式完全一样,除了只是需要更多的填充,而为此专门制作自定义样式需要大量的工作。
我可以进行任何简单的更改,例如设置微调器的某些属性吗?我尝试将微调器类型设置为Dialog,但它仅显示具有相同间距的列表,只是未附加到微调器控件。
最佳答案
我相信Pragnani的答案是正确的,但这就是我实际上的实现方式...
-在RES/layout中,创建一个XML布局,其中仅包含textview,如下所示。此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"/>
然后,在将数据加载到微调器中的 Activity 中,当为微调器创建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中为列表中的每个项目定义的自定义文本 View 。
最终,比起使用样式,这更满足了我的需求。