Как скрыть компонент нижнего колонтитула, который появляется вверху клавиатуры, когда editText фокусируется во фрагменте? - PullRequest
2 голосов
/ 09 июля 2020

enter image description here

Fragment layout введите описание изображения здесь


Фактически нижний колонтитул устанавливается внутри класса активности, а текст редактирования помещается внутри фрагмента. файл manifest

 <activity
        android:name="HomeController"
        android:label="@string/app_name"
        android:windowSoftInputMode="stateHidden|adjustPan"/>

Внутри моего класса фрагмента я добавил

 getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

Это фрагмент кода, который я использовал, но он не будет работать! Примечание: в пользовательском интерфейсе фрагмента весь экран имеет вид прокрутки. Не знаю, почему это происходит именно так? На самом деле я не хочу, чтобы нижний колонтитул располагался вверху клавиатуры.
Есть предложения, как решить эту проблему? И его appriciatble для ответов :)

Ответы [ 3 ]

3 голосов
/ 14 июля 2020

Добавьте это к своей деятельности.

Я не тестировал, но это может сработать. это плохой способ (

 contentView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
    
        Rect r = new Rect();
        View rootView = getWindow().getDecorView().getRootView();
        rootView.getWindowVisibleDisplayFrame(r);
        int screenHeight = rootView.getHeight();
    
        // r.bottom is the position above soft keypad or device button.
        // if keypad is shown, the r.bottom is smaller than that before.
        int keypadHeight = screenHeight - r.bottom;
    
        Log.d(TAG, "keypadHeight = " + keypadHeight);
    
        if (keypadHeight > screenHeight * 0.15) { // 0.15 ratio is perhaps enough to determine keypad height.
            // keyboard is opened
            //set bottom navigation(footer) bar to View.GONE
        }
        else {
            // keyboard is closed
           //set bottom navigation bar(footer) to View.VISIBLE
        }
    }
    });
0 голосов
/ 14 июля 2020

Попробуйте добавить в файл манифеста следующее: android: windowSoftInputMode = "stateAlwaysHidden | adjustResize"

Также удалите из фрагмента следующее: getActivity (). GetWindow () .setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

0 голосов
/ 09 июля 2020

Используйте android: windowSoftInputMode = "hidden" в родительском макете в файле xml. также в случае, если у него есть свойство layoutAbove, попробуйте удалить его.

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