LINUX.ORG.RU

Андроид, человеческое поведение для форм

 ,


0

1

По умолчанию поведение фокуса какое-то упоротое. Т.е. я просто беру простейшую форму, кидаю туда TextEdit, button и начинаются проблемы. Во-первых сразу при запуске курсор стоит в TextEdit-е, причём клавиатуры нет и зачем он там стоит - никому не понятно. Во-вторых если таки кликнуть на TextEdit и потом нажать зеленую кнопку типа Ок, то жмякается следующая кнопка (вроде как фокус переходит на неё) но клавиатура не закрывается, лол. Причём ввод из неё идёт в никуда. Снять выделение с Input-а просто невозможно, кликаешь там в пустое место и тд, реакции 0.

По отдельным моментам вроде есть какие-то решения, всякие там магические заклинания android:focusableInTouchMode=«true» на Layout и тд, можно, наверное, на каждую мелочь написать обработчик в форме, но это жесть, на примитивный функционал, который, казалось бы, должен быть по умолчанию, столько усилий.

Может я что-то в корне не так понимаю?

★★★★★

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="EditText"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button"/>

</LinearLayout>

При запуске приложения фокуса у ET нет, курсор там не стоит, равно как и нет клавиатуры, ты что-то делаешь не так.

Jefail ★★★★
()

потом нажать зеленую кнопку типа Ок

Если ты про action кнопку клавиатуры, то по умолчанию для EditText там перенос строки и возможность вводить mutiline портянку, если хочешь чтобы на её месте была кнопка, которая закрывает клавиатуру, то надо поставить флаг

android:inputType="text"
android:imeOptions="actionDone"

Jefail ★★★★
()
Последнее исправление: Jefail (всего исправлений: 1)
Ответ на: комментарий от Jefail

А что я могу делать не так? Вот твой пример запускаю в эмуляторе (5.0), прям на старте в EditText стоит красный курсор и фокус с него не снять.

Legioner ★★★★★
() автор топика
Последнее исправление: Legioner (всего исправлений: 1)
Ответ на: комментарий от Legioner

На Android 9 поведение точно другое. Я бряку повесил, там разница либо в LinearLayout, либо во ViewRootImpl (по крайней мере ноги фокуса растут откуда-то оттуда), если время вечером будет - посмотрю что там.

Jefail ★★★★
()

https://github.com/FWGS/cs16-client/commit/c8a0cf301f5559ac72e39643f46d8a9cec...

Еле нашёл коммит. :3

В общем трюк в том, чтобы запросить фокус на что-нибудь другое, например, на кнопку(это даже логичнее) и клавиатура более не будет выстреливать автоматически из-за дефолтного фокуса на первом юзабельном объекте, а именно TextEdit.

a1batross ★★★★★
()

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

der_looser ★★
()
Последнее исправление: der_looser (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.