Yesudass Moses Ответов: 1

Ход кнопки экранной клавиатуры в Android


Я разработал нижеприведенный макет в соответствии с таким количеством решений, предоставляемых everywhere.

Я также установил android:windowSoftInputMode="adjustResize|stateVisible" в файле манифеста.

Тем не менее я не могу получить кнопки изображения линейной компоновки над мягкой клавиатурой. Может ли кто-нибудь указать мне, что не так с этим макетом?


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    android:id="@+id/crbox_layout"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation=">
    <ScrollView
        android:id="@+id/scrollView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/m_table_menu">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">
            <EditText
                android:id="@+id/new_box_title"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:ems="10"
                android:hint="Title"
                android:inputType="textPersonName" />
            <EditText
                android:id="@+id/new_box_descri"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="Description"
                android:gravity="top"
                android:inputType="textCapSentences|textMultiLine"
                android:lines="5"
                android:windowSoftInputMode="stateAlwaysVisible" />
        </LinearLayout>
    </ScrollView>
<LinearLayout
    android:id="@+id/m_table_menu"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_alignParentBottom="true">
    <ImageButton
        android:id="@+id/cameraButton"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_weight="1"
        android:background="@android:color/white"
        android:contentDescription="Open Camera"
        app:srcCompat="@drawable/ic_box_camera_icon" />
    <ImageButton
        android:id="@+id/galleryButton"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_weight="1"
        android:background="@android:color/white"
        android:contentDescription="Choose Image"
        app:srcCompat="@drawable/ic_box_image_icon" />
    <ImageButton
        android:id="@+id/imageButton"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_weight="1"
        android:background="@android:color/white"
        android:contentDescription="Choose Color"
        app:srcCompat="@drawable/ic_box_color_icon" />
</LinearLayout>
</RelativeLayout>


Что я уже пробовал:

Я попытался заменить нижеприведенный LinearLayout на TableLayout, но все равно не помог.

David Crow

Вы имеете в виду программную клавиатуру, которая видна, когда либо new_box_title или new_box_descri есть ли фокус?

Кроме того, в вашем макете, похоже, отсутствуют некоторые кавычки (например,, orientation элемент в системе RelativeLayout). Как это вообще компилируется?

Yesudass Moses

да

David Crow

Должно быть, здесь что-то не так. Мягкая клавиатура требует нижней части экрана. Он будет сдвигать все вверх, пока не будет достаточно места для него, чтобы поместиться. Я попробовал ваш код макета в эмуляторе:

Скриншот

Там должно быть достаточно места.

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

1 Ответов

Рейтинг:
9

JesalMithani

Добавьте эту строку в свой класс java

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);


Читайте ответы здесь для получения дополнительной информации : Есть ли какой-нибудь способ изменить значение android:windowSoftInputMode из класса java? - переполнение стека[^]


David Crow

Как это происходит:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
который скрывает любую мягкую область ввода, когда это обычно уместно, помогает ответить на вопрос OP о том, что:

- И все же я не могу получить кнопки изображения линейной компоновки над мягкой клавиатурой."