Как определить, отклонена ли софт-клавиатура в настройке AdjustPan (ТОЛЬКО) в Android? - PullRequest
0 голосов
/ 16 декабря 2018

Товарищи-разработчики, у меня есть проблема, которую я не могу понять, как исправить, и я знаю, что с моим вопросом связаны тысячи возможных вопросов или взломов:

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

Я разрабатывал гибридкакое-то время, и у меня есть только небольшая проблема:

preview

Последняя строка, к сожалению, на некоторых устройствах видна частично, и я знаю, какой код мне нужно добавить в jQuery, чтобы правильно ее отобразить:

$("input[type=number]").click(function(){
    $("#divCustomTime").css({top: -200, position:'absolute'});
});

Однако, если клавиатура отклонена вдругим способом, который не нажимает введите , местоположение div невозможно переместить в его предыдущее местоположение, и я не могу найти способ как взломать его или обмануть его, я пробовал разные подходы, чтобыобнаружение события отклонения, такого как:

  • Нажатие кнопки возврата (не сработало совсем).
  • Поток для обнаружения isAcceptingText.Это не сработало вообще.Пример одного из кодов, которые я пробовал в C #:

    [Export]
    [JavascriptInterface]
    public void KeyboardStatus()
    {
        var timer = new System.Threading.Timer(callback, (InputMethodManager)context.GetSystemService(Context.InputMethodService), TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1));
    }
    
    private static void callback(object state)
    {
        if ((InputMethodManager)state.IsAcceptingText) {
    
        } else {
            //never happens
        }
    }
    

    Откуда я взял эту идею?

    https://stackoverflow.com/a/52693953/2889347

    Я также попробовал вариант сметод: hideSoftInputFromWindow и он не работал.

Вы можете спросить, почему бы вам не использовать опцию adjustResize?

Это 'Было бы легче обнаружить, и я знаю, однако, что все приложение неправильно настроено и искажено, вплоть до того, что мне нужно задействовать много CSS и JS, чтобы более или менее настроить его, чтобы он не выглядел так ужасно, этопочему я выбрал вариант pan , а не resize .

Кроме того, я хотел бы подчеркнуть, что я разрабатываю в Xamarin.Android , но я не думаю, что это может повлиять на язык программирования.

Кто-нибудь знает, как его обнаружить?Спасибо.

1 Ответ

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

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

...