Как ограничить количество места, которое Framelayout занимает на экране?

Я создал фрагмент, который отображает кучу разного текста. Каждый раз, когда активность загружается, текст отличается. Я загружаю этот фрагмент в основное действие, используя макет кадра. Внизу моего основного экрана я создал панель кнопок с тремя кнопками, каждая из которых выполняет различные действия, такие как воспроизведение и следующий элемент. Проблема в том, что иногда, когда текстовые данные большие, а макет кадра расширяется до нижней части экрана. Как я могу ограничить Framelayout, чтобы он оставался над панелью кнопок?

В макете фрагмента у меня есть несколько TextView, вложенных в ScrollView.

фрагмент.xml

<ScrollView xmlns:android = "http://schemas.android.com/apk/res/android"
    xmlns:tools = "http://schemas.android.com/tools"
    android:layout_width = "match_parent"
    android:layout_height = "wrap_content"
    tools:context = ".fragments.TextsFragment">

    <LinearLayout
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:orientation = "vertical"
        android:padding = "10dp">



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

            <TextView
                android:id = "@+id/english_name"
                android:layout_width = "wrap_content"
                android:layout_height = "wrap_content"
                android:padding = "10dp"
                tools:text = "English Name"
                android:textAppearance = "?android:textAppearanceMedium"/>

            <TextView
                android:id = "@+id/orignal_name"
                android:layout_width = "wrap_content"
                android:layout_height = "wrap_content"
                android:padding = "10dp"
                tools:text = "Original Name"
                android:textAppearance = "?android:textAppearanceMedium"/>

            <TextView
                android:id = "@+id/translatied_name"
                android:layout_width = "wrap_content"
                android:layout_height = "wrap_content"
                android:padding = "10dp"
                tools:text = "Translated Name"
                android:textAppearance = "?android:textAppearanceMedium"/>

        </LinearLayout>





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

            <TextView
                android:layout_width = "wrap_content"
                android:layout_height = "wrap_content"
                android:text = "@string/opening_braces"
                android:textAppearance = "?android:textAppearanceMedium"/>

            <TextView
                android:id = "@+id/number"
                android:layout_width = "wrap_content"
                android:layout_height = "wrap_content"
                android:padding = "10dp"
                tools:text = "2"
                android:textAppearance = "?android:textAppearanceMedium"/>

            <TextView
                android:layout_width = "wrap_content"
                android:layout_height = "wrap_content"
                android:padding = "10dp"
                android:text = "@string/colon"
                android:textAppearance = "?android:textAppearanceMedium"/>

            <TextView
                android:id = "@+id/line_number"
                android:layout_width = "wrap_content"
                android:layout_height = "wrap_content"
                android:padding = "10dp"
                tools:text = "42"
                android:textAppearance = "?android:textAppearanceMedium"/>

            <TextView
                android:layout_width = "wrap_content"
                android:layout_height = "wrap_content"
                android:text = "@string/closing_braces"
                android:textAppearance = "?android:textAppearanceMedium"/>

        </LinearLayout>

        <TextView
            android:id = "@+id/word"
            android:layout_width = "wrap_content"
            android:layout_height = "wrap_content"
            android:padding = "10dp"
            tools:text = "Word"
            android:textAppearance = "?android:textAppearanceMedium"/>

        <TextView
            android:id = "@+id/english_translation"
            android:layout_width = "wrap_content"
            android:layout_height = "wrap_content"
            android:padding = "10dp"
            tools:text = "English Translation"
            android:textAppearance = "?android:textAppearanceMedium"/>


    </LinearLayout>



</ScrollView>

main_activity.xml

<?xml version = "1.0" encoding = "utf-8"?>
<RelativeLayout
    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"
    tools:context = ".activity.MainActivity">

    <FrameLayout
        android:id = "@+id/text_container"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        android:layout_alignParentTop = "true"/>

    <RelativeLayout
        android:id = "@+id/linearLayout"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        android:orientation = "horizontal"
        android:layout_marginBottom = "8dp"
        android:layout_marginStart = "8dp"
        android:layout_marginEnd = "8dp" 
        android:layout_alignParentBottom = "true">

        <ImageButton
            android:id = "@+id/play_button"
            android:layout_width = "wrap_content"
            android:layout_height = "wrap_content" 
            app:srcCompat = "@drawable/white_play_button"
            android:contentDescription = "@string/play"
            android:onClick = "onClickPlayButton"
            android:layout_alignParentStart = "true"
            />

        <TextView
            android:id = "@+id/textView3"
            android:layout_width = "170dp"
            android:layout_height = "52dp"
            android:text = "Random"
            android:background = "@drawable/border"
            android:includeFontPadding = "false"
            android:gravity = "center"
            android:layout_toEndOf = "@id/play_button"
            android:layout_alignTop = "@id/play_button"/>


        <ImageButton
            android:id = "@+id/share_button"
            android:layout_width = "wrap_content"
            android:layout_height = "wrap_content" 
            app:srcCompat = "@drawable/white_share_button"
            android:contentDescription = "@string/share"
            android:onClick = "onClickShareButton"
            android:layout_toEndOf = "@id/textView3" />

        <ImageButton
            android:id = "@+id/next_button"
            android:layout_width = "wrap_content"
            android:layout_height = "wrap_content" 
            app:srcCompat = "@drawable/white_next_button"
            android:contentDescription = "@string/next"
            android:onClick = "onClickNextButton"
            android:layout_toRightOf = "@+id/share_button"/>
    </RelativeLayout>

</RelativeLayout>

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

0
0
169
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

How can I limit Framelayout to remain above buttons panel?

Вы можете сказать окружению RelativeLayout, чтобы убедиться, что FrameLayout остается над панелью кнопок, используя атрибут android:layout_above для FrameLayout

 <FrameLayout
        android:id = "@+id/text_container"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        android:layout_alignParentTop = "true"
        android:layout_above = "@+id/linearLayout"/>

См. документация для RelativeLayout, чтобы узнать больше об атрибутах макета.

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