Изменения размера выпадающего списка в пользовательском AppCompatAutoCompleteTextView - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть требование показать раскрывающийся список в AutoCompleteTextView, как только он получит фокус.Для этого я создал класс, расширяющий AppCompatAutoCompleteTextView.

public class DropDownAutoComplete extends AppCompatAutoCompleteTextView 
    implements View.OnFocusChangeListener , View.OnClickListener
{
        @Override
        public boolean enoughToFilter() {
            return true;
        }

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if(hasFocus)
            {
                if(getText().length()==0)
                    showDropDown();
            }
        }

        @Override
        public void onClick(View v) {
            if(getText().length()==0)
                showDropDown();
        }
}

, кроме того, я использовал пользовательский макет для выпадающего элемента, предоставив его в адаптер.

customAdapter.setAdapter(new ArrayAdapter<String>(AddExpense.this,
    R.layout.custom_autocomplete_dropdown_item, stringArray)); 



<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/text"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/background_divider"
    android:textColor="@color/autocomplete_text_color"
    android:textAppearance="?android:attr/textAppearanceLarge"
    style="?android:attr/dropDownItemStyle"
    android:maxLines="1"
    android:padding="8dp"
/>

background_divider.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@android:color/black" />
        </shape>
    </item>
    <item android:bottom="1dp">
        <shape android:shape="rectangle">
            <solid android:color="@android:color/white" />
        </shape>
    </item>
</layer-list>

Во время события onFocus раскрывающийся список загружается должным образом. Но после вардера, когда я нажимаю на autocompletetextview, когда раскрывающийся список виден, раскрывающийся список перезагружается, но макетполностью запутан, как будто он загружает какой-то выпадающий элемент по умолчанию вместо того, который он разработал.Как я могу это исправить.Я был бы очень признателен за любую помощь.

Это DropDown, я ожидаю, что появляется на FocusEvent

Это то, что происходит, когда я нажимаю на вид, когда выпадающий список виден

1 Ответ

0 голосов
/ 14 декабря 2018

Решение, которое я использовал, как упомянуто в моем комментарии выше.Кажется, просто вызов кода в следующем порядке перезагружает представление.

dismissDropDown();
showDropDown();

Я могу предположить, что это вызывает перерисовку, следовательно, пользовательский интерфейс отображается правильно.Я оставляю это как ответ на случай, если кто-то еще находится в моей ситуации.Пожалуйста, не стесняйтесь редактировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...