ScrollView: две проблемы с фокусом EditTexts

У меня есть странная проблема, что у меня проблемы даже с артикуляцией.

Мой макет – это относительный макет, содержащий прокрутку, содержащую чипы и текст редактирования. Ниже прокрутки открывается список для автоматического завершения, ниже которого находится линейная компоновка, в которой размещается текст редактирования и кнопка. (Экранные снимки в конце этого сообщения).

Когда фрагмент загружается и пользователь вводит в edittext внутри прокрутки, появляется список с параметрами автоматического завершения. Когда выбрана опция автозаполнения, которая добавляется как выбранный чип. Библиотека, которая генерирует эти чипы, не очищает фокус текста редактирования, но что-то бегает от ОС, чтобы переместить фокус в нижний текст редактирования. Это приводит к странному состоянию, когда оба текста редактирования мигают, как если бы они фокусировались. Если пользователь снова набирает текст на клавиатуре, фокус на самом деле находится на нижнем текстовом редакторе, и теперь нет возможности снова сфокусироваться на первом тексте редактирования.

Код для NonFocusingScrollView выглядит следующим образом. Это правильно зафиксировало мою проблему, когда просмотр прокрутки вокруг ChipsView захватывал фокус и не позволял правильному редактированию текста. ( SevenChipsView в макете является просто расширением ChipsView ).

Я пробовал, программно, удаляя фокус из нижнего текста редактирования и явно помещая его обратно в текст редактирования в прокрутке, но это ничего не делает.

Есть ли способ, которым я могу помешать ОС смещать фокус вокруг и оставаться в верхнем текстовом редакторе, пока пользователь не удалит нижний текст редактирования?

 Открытый класс NonFocusingScrollView расширяет ScrollView {
     Public NonFocusingScrollView (контекст контекста) {
         супер (контекст);
     }

     Public NonFocusingScrollView (контекст контекста, AttributeSet attrs) {
         Супер (контекст, attrs);
     }

     Public NonFocusingScrollView (контекст контекста, AttributeSet attrs, int defStyleAttr) {
         Супер (контекст, attrs, defStyleAttr);
     }

     @TargetApi (Build.VERSION_CODES.LOLLIPOP)
     Public NonFocusingScrollView (контекст контекста, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
         Супер (контекст, attrs, defStyleAttr, defStyleRes);
     }

     @Override
     Protected boolean onRequestFocusInDescendants (int direction, Rect ранееFocusedRect) {
         Return true;
     }

     @Override
     Public ArrayList getFocusables (int direction) {
         Вернуть новый ArrayList ();
     }

     @Override
     Public void requestChildFocus (просмотр дочернего объекта, просмотр сфокусирован) {
         // избегать прокрутки к сфокусированному элементу
     }
 }

Макет XML

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:id="@+id/messaging_announcement_recipient_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="top" android:background="@color/screen_background" android:orientation="horizontal" android:padding="8dip"> <TextView style="@style/default_textview" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginEnd="8dip" android:layout_marginLeft="0dp" android:layout_marginRight="8dip" android:layout_marginStart="0dp" android:gravity="center_vertical" android:text="@string/recipient_to" android:textColor="@android:color/white" /> <com.sevenshifts.android.views.NonFocusingScrollView android:id="@+id/messaging_announcements_recipients_scroll_view" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="2" android:focusable="true" android:focusableInTouchMode="true" android:padding="0dp"> <com.sevenshifts.android.views.SevenChipsView android:id="@+id/messaging_announcements_recipients" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="0dp" android:textColor="@android:color/white" app:cv_bg_color_clicked="@color/primary" app:cv_color_clicked="@color/primary" app:cv_icon_placeholder="@drawable/ic_house" /> </com.sevenshifts.android.views.NonFocusingScrollView> </LinearLayout> <se.emilsjolander.stickylistheaders.StickyListHeadersListView android:id="@+id/messaging_announcements_recipient_autocomplete" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/messaging_announcement_recipient_container" android:visibility="gone" /> <LinearLayout android:id="@+id/messaging_announcements_compose_post_container" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_marginLeft="8dip" android:layout_marginRight="8dip" android:minHeight="44dip" android:orientation="horizontal"> <EditText android:id="@+id/messaging_announcement_post_text" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:hint="@string/announcement_hint" android:inputType="textMultiLine|textCapSentences|textAutoCorrect" android:maxLines="5" /> <Button android:id="@+id/messaging_announcement_post_button" android:layout_width="80dp" android:layout_height="44dip" android:background="@null" android:text="@string/send" android:textColor="@color/primary" /> </LinearLayout> <include layout="@layout/component_loading" /> </RelativeLayout> 

Поток экрана в этой галерее imgur – слишком много, чтобы не толковать это сообщение: http://imgur.com/a/zWY0D

Solutions Collecting From Web of "ScrollView: две проблемы с фокусом EditTexts"