首页 > 解决方案 > Android Spinner 文字区别

问题描述

我在我的 XML 布局中添加了两个不同的微调器,一个通过 XML 文件填充,一个以编程方式填充。

<Spinner
        android:id="@+id/spHome"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:textAlignment="textEnd" />

    <Spinner
        android:id="@+id/spDevice"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:entries="@array/spinner_data"
        android:textAlignment="textEnd" />

因此,一个 Spinner 是通过这个 XML 文件填充的,它非常好,并且提供了良好的清晰文本质量。

<resources>
<string-array name="spinner_data">
    <item>Alle apparaten</item>
    <item>Light</item>
    <item>Door Sensor</item>
    <item>Socket</item>
    <item>Smart meter</item>
    <item>Multi sensor</item>
</string-array>

<string-array name="solo_data">
    <item>Hele huis</item>
</string-array>

另一个微调器以编程方式填充,代码如下:

private var roomDtoList: ArrayList<RoomItemDto> = ArrayList()
private var spRoomData : ArrayList<String> = ArrayList<String>()

private fun fillSpRooms(){
    spRoomData.clear()

    for(item in roomDtoList){
        spRoomData.add(item.name)
    }
    var spAdapter : ArrayAdapter<String> = ArrayAdapter<String>(this.context, R.layout.spinner_drop_layout, R.id.spinnerTextview, spRoomData)
    spHome!!.adapter = spAdapter
}

所以每当我用下面的代码填充这个微调器时,填充的文本看起来很难看,并且每行之间没有边距/间距。即使我将边距和 textStyling 添加到 R.id.spinnerTextview 中,它也不会使文本看起来清晰。

有人知道修复吗?

标签: kotlinspinner

解决方案


尝试这样做。希望这会有所帮助。

    for(item in roomDtoList){
        spRoomData.add(item.name)
    }

    spHome!!.setOnItemSelectedListener(this)

    // Create an ArrayAdapter using a simple spinner layout and languages array
    val aa = ArrayAdapter(this, android.R.layout.simple_spinner_item, spRoomData)
    // Set layout to use when the list of choices appear
    aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
    // Set Adapter to Spinner
    spHome!!.setAdapter(aa)

推荐阅读