Search code examples
androidspinnermultiline

Android Spinner not work multiline


I have a problem when viewing spinner in android. that is multiline Android 5.1.1 is not displayed .. but below android if the multiline is the code I use is the following.

This same code right out of another question but did not see answer to help me

/res/values/arrays.xml:

<string-array name="items">
<item>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt.</item>
<item>At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est.</item>

res/layout/spinner_item.xml:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    style="?android:attr/spinnerDropDownItemStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ellipsize="none"
    android:minHeight="?android:attr/listPreferredItemHeight"
    android:singleLine="false" />

Set Adapter

spinner.setAdapter(ArrayAdapter.createFromResource(this,
            R.array.items,
            R.layout.spinner_item));

please help me


Solution

  • Override getDropDownView method in ArrayAdapter and put setSingleLine(false) in post method of view. So when view completly created it wraps the text to appropriate lines.

    @Override
        public View getDropDownView(final int position, View convertView, ViewGroup parent) {
            if (convertView == null) {
                convertView = new TextView(_context);
            }
    
            TextView item = (TextView) convertView;
            item.setText("asddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd");
            final TextView finalItem = item;
            item.post(new Runnable() {
                @Override
                public void run() {
                    finalItem.setSingleLine(false);
                }
            });
            return item;
        }
    

    For details visit