Android中Spinner下拉列表单个item显示多行文本的处理

1. 首先先创建一个布局文件 spinner_multiline_item_simple.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="12dp"
    android:textSize="16sp"
    android:textColor="#333333"
    android:ellipsize="end"
    android:singleLine="false"  <!-- 关键:允许多行 -->
    android:maxLines="3"        <!-- 最大显示3行 -->
    android:minHeight="48dp"/>  <!-- 最小高度 -->

2. 处理适配器

private void setupSpinnerWithMultilineLayout() {
    Spinner spinner = findViewById(R.id.spinner);
    
    // 包含换行符的文本
    String[] items = {
        "正常选项",
        "第一行文字\r\n第二行文字",
        "这是描述文本的第一行\n这是第二行\n这是第三行",
        "短文本"
    };
    
    // 使用自定义布局
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(
        this,
        R.layout.spinner_multiline_item_simple,  // 自定义布局
        items
    ) {
        // 选中项显示单行
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            TextView textView = (TextView) super.getView(position, convertView, parent);
            
            // 选中项去除换行,显示为单行
            String text = getItem(position);
            if (text != null) {
                text = text.replace("\r\n", " ").replace("\n", " ");
                textView.setText(text);
                textView.setSingleLine(true);
                textView.setEllipsize(TextUtils.TruncateAt.END);
            }
            
            return textView;
        }
    };
    
    spinner.setAdapter(adapter);
}

3.看看效果,下拉列表和点击选择后的效果

image

image

 

posted @ 2025-12-19 14:18  _Vincent  阅读(3)  评论(0)    收藏  举报