Я создал фрагмент, который отображает кучу разного текста. Каждый раз, когда активность загружается, текст отличается. Я загружаю этот фрагмент в основное действие, используя макет кадра. Внизу моего основного экрана я создал панель кнопок с тремя кнопками, каждая из которых выполняет различные действия, такие как воспроизведение и следующий элемент. Проблема в том, что иногда, когда текстовые данные большие, а макет кадра расширяется до нижней части экрана. Как я могу ограничить 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>
Есть ли способ сохранить рамку чуть выше панели кнопок внизу, а не расширяться до нижней части экрана?
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, чтобы узнать больше об атрибутах макета.