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

2022-09-02 02:20:25

我有一个Android应用程序,我正在为一家Concrete公司编写,该应用程序将用于打卡和出卡。我使用了一些微调器从下拉列表中选择诸如“工作现场”和“作业”之类的内容,但我担心微调器中的项目太近,并且员工很难选择正确的项目。

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

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


答案 1

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

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

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 时,我将自定义文本视图作为第二个参数传递给 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中为列表中的每个项目定义。

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


答案 2

如果你想给出令人满意的间距,那么如果所有这些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);

它对我有用。


推荐