Scrollview не показывает последний элемент в макете

Вот код, с которым я столкнулся с проблемой: я взял 2 линейных макета внутри прокрутки, теперь последняя кнопка внутри 2-го линейного макета скрыта, или я могу сказать, что не отображается должным образом.

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

Scrollview не показывает последний элемент в макете

<ScrollView
    xmlns:android = "http://schemas.android.com/apk/res/android"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:fillViewport = "true"
    >

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

        <LinearLayout
            android:id = "@+id/ConcernedPortionofScreen"
            android:layout_width = "match_parent"
            android:layout_height = "0dp"
            android:layout_weight = "0.25"
            android:orientation = "vertical">
        </LinearLayout>

        <LinearLayout
            android:id = "@+id/RestofScreen"
            android:layout_width = "match_parent"
            android:layout_height = "0dp"
            android:layout_weight = "0.75"
            android:orientation = "vertical"
            android:padding = "20dp">               

            <Button
                android:layout_width = "match_parent"
                android:layout_height = "wrap_content"
                android:background = "@drawable/custom_button_shape_with_bg_primary"
                android:minHeight = "@dimen/minimum_height_all_object"
                android:layout_marginTop = "@dimen/add_child_rquest_margin_top"
                android:text = "SELECT"
                android:textColor = "@color/white"
                />
        </LinearLayout>

    </LinearLayout>
</ScrollView>

когда я пытаюсь удалить layout_weight, мой макет набирает массу.

Scrollview не показывает последний элемент в макете

<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 = "@android:color/white"
    android:orientation = "vertical"
    tools:context = ".MainActivity">

    <ScrollView xmlns:android = "http://schemas.android.com/apk/res/android"
        android:layout_width = "match_parent"
        android:layout_height = "match_parent"
        android:fillViewport = "true">

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

            <LinearLayout
                android:id = "@+id/ConcernedPortionofScreen"
                android:layout_width = "match_parent"
                android:layout_height = "0dp"
                android:layout_weight = "0.25"
                android:orientation = "vertical">

                <!-- Parent FrameLayout 'FL' -->
                <FrameLayout
                    android:layout_width = "match_parent"
                    android:layout_height = "match_parent">

                    <!--Conitans Tree Childs -->

                </FrameLayout>
            </LinearLayout>

            <LinearLayout
                android:id = "@+id/RestofScreen"
                android:layout_width = "match_parent"
                android:layout_height = "0dp"
                android:layout_weight = "0.75"
                android:orientation = "vertical"
                android:padding = "20dp">

                <LinearLayout
                    android:layout_width = "match_parent"
                    android:layout_height = "wrap_content"
                    android:weightSum = "1">

                    <!--Conitans Two Childs -->

                </LinearLayout>


                <EditText
                    style = "@style/CustomEdittextTheme"
                    android:layout_width = "match_parent"
                    android:layout_height = "wrap_content"
                    android:layout_marginTop = "@dimen/add_child_rquest_margin_top"
                    android:hint = "Enter Child Name"
                    android:minHeight = "@dimen/add_child_rquest_minimum_height_all_object" />

                <EditText
                    style = "@style/CustomEdittextTheme"
                    android:layout_width = "match_parent"
                    android:layout_height = "wrap_content"
                    android:layout_marginTop = "@dimen/add_child_rquest_margin_top"
                    android:hint = "Select City"
                    android:minHeight = "@dimen/add_child_rquest_minimum_height_all_object" />

                <TextView
                    style = "@style/CustomEdittextTheme"
                    android:layout_width = "match_parent"
                    android:layout_height = "wrap_content"
                    android:layout_marginTop = "@dimen/add_child_rquest_margin_top"
                    android:hint = "Select Birthdate"
                    android:minHeight = "@dimen/add_child_rquest_minimum_height_all_object" />

                <LinearLayout
                    android:layout_width = "match_parent"
                    android:layout_height = "wrap_content"
                    android:orientation = "horizontal"
                    android:weightSum = "1">

                    <!--Conitans Two Childs -->

                </LinearLayout>

                <LinearLayout
                    android:layout_width = "match_parent"
                    android:layout_height = "wrap_content"
                    android:orientation = "horizontal"
                    android:weightSum = "1">

                    <!--Conitans Two Childs -->

                </LinearLayout>


                <EditText
                    style = "@style/CustomEdittextTheme"
                    android:layout_width = "match_parent"
                    android:layout_height = "wrap_content"
                    android:layout_marginTop = "@dimen/add_child_rquest_margin_top"
                    android:hint = "Enter Mobile Number"
                    android:minHeight = "@dimen/add_child_rquest_minimum_height_all_object" />

                <LinearLayout
                    android:layout_width = "match_parent"
                    android:layout_height = "wrap_content"
                    android:orientation = "horizontal"
                    android:weightSum = "1">

                    <!--Conitans Two Childs -->

                </LinearLayout>

                <TextView
                    android:layout_width = "match_parent"
                    android:layout_height = "wrap_content"
                    android:layout_marginTop = "@dimen/add_child_rquest_margin_top"
                    android:fontFamily = "@font/segoe_ui_bold"
                    android:paddingLeft = "10dp"
                    android:text = "Note / Message :"
                    android:textColor = "@color/colorPrimaryDark"
                    android:textSize = "18dp" />

                <EditText
                    style = "@style/CustomEdittextTheme"
                    android:layout_width = "match_parent"
                    android:layout_height = "wrap_content"
                    android:layout_marginTop = "@dimen/add_child_rquest_margin_top"
                    android:inputType = "textMultiLine"
                    android:lines = "8"
                    android:maxLines = "8"
                    android:minHeight = "@dimen/add_child_rquest_minimum_height_all_object"
                    android:minLines = "8"
                    android:scrollbars = "vertical" />


                <Button
                    android:layout_width = "wrap_content"
                    android:layout_height = "wrap_content"
                    android:layout_gravity = "center_horizontal"
                    android:layout_marginTop = "@dimen/add_child_rquest_margin_top"
                    android:background = "@drawable/custom_button_shape_with_bg_primary"
                    android:fontFamily = "@font/segoe_ui_bold"
                    android:minHeight = "@dimen/add_child_rquest_minimum_height_all_object"
                    android:text = "SUBMIT"
                    android:textColor = "@color/white" />
            </LinearLayout>
        </LinearLayout>
    </ScrollView>
</android.support.constraint.ConstraintLayout>

что такое android: minHeight = "" значение размера?

sushildlh 05.01.2019 14:51

Вы устанавливаете высоту LinearLayout на match_parent, поэтому прокрутки никогда не будет.

Dan Harms 05.01.2019 15:32

@SushilKumar это 'android: minHeight = "40dp"'

Kishan 05.01.2019 16:10

@dharms scrolling работает, на нем так много элементов, но проблема с последним элементом. У меня такая же проблема с другим макетом.

Kishan 05.01.2019 16:11

вы не должны использовать родителя match для дочернего элемента scrollview, а также удалять веса, это основные проблемы.

Asif Rahman 05.01.2019 16:13

@AsifRahman Я взял 2 линейных макета внутри scrollview, поэтому я выбираю веса, которые управляют относительным макетом моего экрана.

Kishan 05.01.2019 16:50

Здесь не используются веса внутри scrollview. Удалите и проверьте это.

Raj 05.01.2019 17:32

@Raj, а что, если я хочу исправить часть всего макета?

Kishan 05.01.2019 17:40

@Raj checkout после удаления весов мой макет становится беспорядочным.

Kishan 05.01.2019 17:48

@dharms, верно, сэр

Ashvin solanki 05.01.2019 17:56
0
10
2 733
3

Ответы 3

Это Happends из-за layout_height = "match_parent" для ScrollView дочернего LinearLayout Измените layout_height на wrap_content

<ScrollView
    xmlns:android = "http://schemas.android.com/apk/res/android"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:fillViewport = "true"
    >

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

    //childs ..........
    </LinearLayout>
<ScrollView>

wrap_content

Установка размера представления на wrap_content заставит его расшириться настолько, чтобы вместить значения (или дочерние элементы управления), которые он содержит. Для элементов управления, таких как текстовые поля (TextView) или изображения (ImageView), это будет переносить отображаемый текст или изображение. Для элементов макета он изменит размер макета, чтобы он соответствовал элементам управления / макетам, добавленным в качестве его дочерних элементов.

Официальные документы говорят

  • FILL_PARENT (переименован в MATCH_PARENT на уровне API 8 и выше), что означает, что представление должно быть как big as its parent (без заполнения)

  • WRAP_CONTENT, что означает, что представление должно быть просто большим enough to enclose its content (плюс отступы)

вы удалили android:weightSum = "1"

Ashvin solanki 05.01.2019 18:03

@Kishan и замените все дочерние элементы ScrollView с attr android:layout_height = "0dp" на wrap_content или match_parent

Ashvin solanki 05.01.2019 18:06

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

Kishan 06.01.2019 06:28

@Kishan, вы удалили android: weightSum = "1"

Ashvin solanki 06.01.2019 16:15

я удаляю "weightSum = 1" из ScrollView => LinearLayout => LinearLayout [отсюда я удаляю] да, это работает, но проблема в том, что мой макет портится ....

Kishan 07.01.2019 11:45

у вас есть teamViewer?

Ashvin solanki 07.01.2019 11:57

Ребята, я только что удалил Main Linear_layout, и теперь он работает хорошо.

Спасибо, ребята, что ответили.

Вот код, который мне подходит.

<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 = "@android:color/white"
    android:orientation = "vertical"
    tools:context = ".MainActivity">

    <ScrollView xmlns:android = "http://schemas.android.com/apk/res/android"
        android:layout_width = "match_parent"
        android:layout_height = "match_parent"
        android:fillViewport = "true">

        <LinearLayout
            android:id = "@+id/ConcernedPortionofScreen"
            android:layout_width = "match_parent"
            android:layout_height = "wrap_content"
            android:orientation = "vertical">

            <!-- Part 1 [layout_weight='0.3' ] -->
            <FrameLayout
                android:layout_width = "match_parent"
                android:layout_height = "wrap_content"
                >

                <!-- Contains Childs -->

            </FrameLayout>

            <!-- Part 2 [layout_weight='0.7' ] -->
            <LinearLayout
                android:id = "@+id/RestofScreen"
                android:layout_width = "match_parent"
                android:layout_height = "0dp"
                android:layout_weight = "0.75"
                android:orientation = "vertical"
                android:padding = "20dp">

                <!-- Contains All Childs -->

            </LinearLayout>

        </LinearLayout>

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

простейшее решение помещает ConstraintLayout в ScrollView следующим образом

    <ScrollView
            android:layout_width = "match_parent"
            android:layout_height = "match_parent"
            android:fillViewport = "true"
            android:overScrollMode = "never">

            <androidx.constraintlayout.widget.ConstraintLayout
                android:id = "@+id/constraintLayout"
                android:layout_width = "match_parent"
                android:layout_height = "wrap_content">

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

<!--            your other views could be here-->
<!--            your other views could be here-->
                </LinearLayout>
            </androidx.constraintlayout.widget.ConstraintLayout>
    </ScrollView>

Другие вопросы по теме