Как я могу сделать многострочное быстрое приглашение? - PullRequest
0 голосов
/ 23 мая 2018

У меня есть спиннер, который позволяет мне не показывать первый элемент в списке, но я могу настроить свое приглашение.Однако всякий раз, когда текст подсказки занимает более одной строки, он обрезается в границах представления.Как сделать так, чтобы подсказка счетчика расширялась, чтобы вместить больше текста?

Я попытался изменить представление, передаваемое в адаптер, чтобы оно имело несколько строк, а также многоточие в конце, но ничего не работает.

Изображения для наглядности: с одной строкой текста enter image description here

с несколькими строками enter image description here

Это мой код:

  languagesSpinner.setAdapter(new ArrayAdapter<>(EditProfileNationalityActivity.this, R.layout.no_default_spinner_item, new String[] {""}));

if(data.length>0) {
  String countries = spokenLanguages.toString().substring(0, spokenLanguages.toString().length() - 2);
        languagesSpinner.setPrompt(countries);
} else {

        Log.e("setting prompt to default");
        languagesSpinner.setPrompt("Please select languages");
}

и это XML-файл:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_gravity="center_vertical"
android:textColor="@android:color/black"
android:textSize="18sp"
android:ellipsize="end"
android:lines="2"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:paddingLeft="1dp"
android:paddingRight="1dp"
android:background="?android:attr/activatedBackgroundIndicator" />

Для запроса XML-определение счетчика выглядит следующим образом:

  <com.package.views.NoDefaultSpinner
            android:id="@+id/registration_stage_4_country_languages"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:clickable="false" />

NoDefaultSpinner.java может бытьнашел здесь: https://github.com/geftimov/android-components/blob/master/components/src/main/java/com/eftimoff/components/views/spinners/nodefault/NoDefaultSpinner.java

Я изменил его, чтобы иметь собственный метод getView () в SpinnerProxy, как это:

 if (position < 0) {
            if (layoutResource == -1) {
                layoutResource = R.layout.no_default_spinner_item;
            }
            final TextView v =
                    (TextView) ((LayoutInflater) getContext().getSystemService(
                            Context.LAYOUT_INFLATER_SERVICE)).inflate(
                            layoutResource, parent, false);
            v.setText(getPrompt());
            v.setPadding(0, 5, 0, 5);

            return v;
        }
        return obj.getView(position, convertView, parent);
    }

1 Ответ

0 голосов
/ 23 мая 2018

Я отредактировал ваш исходный код:

adapter = new ArrayAdapter<>(EditProfileNationalityActivity.this, R.layout.no_default_spinner_item, new String[] {""});
adapter.setDropDownViewResource(R.layout.no_default_spinner_item);
languagesSpinner.setAdapter(adapter);
...