Search code examples
androidlayoutkeyboardscrollview

Is there any way to forbid keyboard to move LinearLayout?


I have a fragment and LinearLayout in my activity. In this fragment I have a textview. If there is no ScrollView in fragment, everything works fine. But if there is ScrollView LinearLayout move to the top of keyboard.
This is how my app looks without Scrollview on the text: https://yapx.ru/v/EPcoQ
And this how it looks with it: https://yapx.ru/v/EPcqd
I don't like that Navigation Bar on the bottom isn't hidden when the keyboard is active. What can I do to make app lok like on the first photo andk make textView scrollable?

I've tried to use "windowSoftInputMode" to forbid keyboard move this LinearLayout, but it didn't helped. I have also tried "focusableInTouchMode" and "isScrollContainer" attributes, but they were useless too.

This is the activity file:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main_chetnost"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#86A0FC"
    android:windowSoftInputMode="adjustResize"
    >


    <fragment
        android:id="@+id/fragment_theory"
        android:name="com.example.user.mathplace_1.theory"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintBottom_toTopOf="@+id/linearLayout"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/toolbar" />

    <fragment
        android:id="@+id/fragment_task"
        android:name="com.example.user.mathplace_1.Task"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintBottom_toTopOf="@+id/linearLayout"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/toolbar"
        app:layout_constraintVertical_bias="0.0" />

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="0dp"
        android:layout_height="60dp"
        android:background="?attr/colorPrimary"
        android:minHeight="?attr/actionBarSize"
        android:theme="?attr/actionBarTheme"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:title="MathPlace"
        app:titleTextColor="#fff">

        <ImageButton
            android:id="@+id/homeButton"
            android:layout_width="44dp"
            android:layout_height="44dp"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"
            android:layout_gravity="end"
            android:layout_marginStart="8dp"
            android:layout_marginTop="6dp"
            android:layout_marginEnd="8dp"
            android:layout_marginBottom="6dp"
            android:background="@drawable/home"
            android:contentDescription="@string/report_description"
            android:onClick="delete"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.887"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.987" />

    </android.support.v7.widget.Toolbar>



    <LinearLayout
        android:id="@+id/linearLayout"
        android:layout_width="match_parent"
        android:layout_height="75dp"
        android:background="#FFF"
        android:orientation="horizontal"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        android:focusableInTouchMode="false"
        android:isScrollContainer="false">

        <HorizontalScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#accbff"
            android:orientation="horizontal"
            android:focusableInTouchMode="false"
            android:isScrollContainer="false">

            <LinearLayout
                android:id="@+id/LinearLayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:focusableInTouchMode="false"
                android:isScrollContainer="false"/>
        </HorizontalScrollView>

    </LinearLayout>
</android.support.constraint.ConstraintLayout>

And this is the fragment code:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/background"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <EditText
        android:id="@+id/editText"
        android:layout_width="237dp"
        android:layout_height="46dp"
        android:layout_marginTop="8dp"
        android:ems="10"
        android:hint="Введите ваш ответ"
        android:inputType="number"
        android:textColor="#5B6175"
        android:textSize="23sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="@+id/cardView"
        app:layout_constraintTop_toBottomOf="@+id/cardView"
        app:layout_constraintVertical_bias="0.3" />


    <ImageButton
        android:id="@+id/send"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_marginTop="8dp"
        android:background="@drawable/send"
        android:onClick="send"
        android:scaleType="fitXY"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="@+id/cardView"
        app:layout_constraintTop_toBottomOf="@+id/cardView"
        app:layout_constraintVertical_bias="0.3" />

    <android.support.v7.widget.CardView
        android:id="@+id/cardView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.4">

        <ScrollView
            android:id="@+id/scrollView4"
            android:layout_width="310dp"
            android:layout_height="375dp">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">

                <TextView
                    android:id="@+id/textView3"
                    android:layout_width="310dp"
                    android:layout_height="375dp"
                    android:background="@drawable/text_rounded_corner"
                    android:padding="8dp"
                    android:text="dddddddddddddddddddddddd"
                    android:textColor="#5B6175"
                    android:textSize="20sp" />
            </LinearLayout>
        </ScrollView>
    </android.support.v7.widget.CardView>

    <TextView
        android:id="@+id/textView"
        android:layout_width="310dp"
        android:layout_height="47dp"
        android:background="@drawable/title_rounded_corner"
        android:padding="8dp"
        android:text="Заголовок"
        android:textColor="#FFF"
        android:textSize="24sp"
        app:layout_constraintBottom_toTopOf="@+id/cardView"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.504"
        app:layout_constraintStart_toStartOf="parent" />
    <ImageView
        android:id="@+id/star2"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_marginEnd="44dp"
        android:layout_marginBottom="8dp"
        app:layout_constraintBottom_toBottomOf="@+id/textView"
        app:layout_constraintEnd_toEndOf="@+id/textView"
        app:layout_constraintTop_toTopOf="@+id/textView"
        app:layout_constraintVertical_bias="1.0"
        app:srcCompat="@drawable/star" />

    <ImageView
        android:id="@+id/star1"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_marginEnd="12dp"
        android:layout_marginBottom="8dp"
        app:layout_constraintBottom_toBottomOf="@+id/textView"
        app:layout_constraintEnd_toEndOf="@+id/textView"
        app:layout_constraintTop_toTopOf="@+id/textView"
        app:layout_constraintVertical_bias="1.0"
        app:srcCompat="@drawable/star" />

    <ImageView
        android:id="@+id/star3"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_marginEnd="76dp"
        android:layout_marginBottom="8dp"
        app:layout_constraintBottom_toBottomOf="@+id/textView"
        app:layout_constraintEnd_toEndOf="@+id/textView"
        app:layout_constraintTop_toTopOf="@+id/textView"
        app:layout_constraintVertical_bias="1.0"
        app:srcCompat="@drawable/star" />

</android.support.constraint.ConstraintLayout>

Solution

  • I've found how I can make my text scrollable without breaking old app view. I just needed to add one line to the java file:

    myTextview.setMovementMethod(new ScrollingMovementMethod());