2013-11-29 3 views
0

У меня есть горизонтальный ScrollView, у которого есть EditText s на самом левом, некоторые другие в середине, а справа у меня есть Button. Когда эта кнопка нажата, появится диалоговое окно. Этот диалог содержит EditText. Поэтому, когда я открываю этот диалог, edittext внутри получает фокус и отображается клавиатура. Ничего страшного. Но что не в порядке, так это то, что прокрутка просматривается в edittext и что редактирование текста получает фокус.Android scrollview scrolls to edittext

Поэтому перед тем, как я нажму кнопку, scroolview прокручивается до упора вправо, а фокус находится в корне RelativeLayout, который содержит прокрутку. Это означает, что у edittext нет фокуса. Но когда я ввожу текст в edittext диалога и нажимаю OK, диалог закрывается, и теперь прокрутка просматривается полностью влево и фокусируется на edittext.

Как предотвратить это. Я хочу, чтобы фокус оставался на RelativeLayout после закрытия диалога. Я поставил это на RelativeLayout, но это то же самое:

android:descendantFocusability="beforeDescendants" 
android:focusableInTouchMode="true" 
+0

Можете ли вы предоставить макет и некоторый код, показывающий поведение? Трудно понять и объяснить (что нормально, так как это сложное поведение) – jboi

ответ

0

Просто дикое предположение: Вы можете контролировать, какой элемент получает фокус с android:nextFocusXXX атрибутами. Особенно attributes:nextFocusForward выглядит перспективным.

РЕДАКТИРОВАТЬ: Как говорится в вашем комментарии, фокус должен быть смещен после отклонения диалога. Вы можете добавить звонок к view.requestFocus() для EditText, который вы хотите сосредоточить. Добавьте этот вызов в DialogInterface.OnDismissListener.

+0

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

+0

Да, я вижу этот момент. Моя (дикая) догадка заключалась в том, чтобы добавить этот атрибут к кнопке и посмотреть, действительно ли она прокручивается в нужное место после отклонения диалога. Тем временем я получил еще одну идею с диалогом. Просто добавив, что к моему ответу – jboi

+0

Я не хочу сфокусировать текст редактирования. Я хочу, чтобы фокус оставался там, где он есть, прежде чем показывать диалог, а также позицию scrollview, чтобы оставаться там, где она есть, прежде чем показывать диалог. – nikmin

Смежные вопросы