kotlin - 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 中,它也不会使文本看起来清晰。
有人知道修复吗?
解决方案
尝试这样做。希望这会有所帮助。
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)