Spinner 下拉選項顯示文字超過某長度會被截斷或換行顯示不全。
android.R.layout.simple_spinner_dropdown_item,內部 TextView 設定 singleLine=true 且 ellipsize=end。ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, data) {
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View view = super.getDropDownView(position, convertView, parent);
if (view instanceof TextView) {
TextView tv = (TextView) view;
tv.setSingleLine(false); // 允許換行
tv.setEllipsize(null); // 取消省略號
tv.setMaxLines(3); // 最多 3 行
tv.setPadding(20, 10, 20, 10); // 增加內邊距
}
return view;
}
};
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
放棄 Spinner,點擊按鈕彈出 AlertDialog 含 ListView 或 RecyclerView,完全掌控項目佈局、高度、換行、圖片等。
引入 com.github.ganfra:MaterialSpinner:1.3.1 等庫,原生支援多行、圖標、搜尋。
原生 Spinner 受限於系統佈局,長文字建議自訂 Adapter 或改用 Dialog 方案,勿強行突破系統限制。