Android ScrollView и кнопки внизу экрана - PullRequest
36 голосов
/ 17 февраля 2012

Я хочу реализовать это: ScrollView, который содержит много элементов (ImageViews, TextViews, EditTexts и т. Д.), А затем после ScrollView некоторые кнопки (которые являются пользовательскими ImageViews), которые появляются всегда точно в нижней части экрана.

Если я использую атрибут android: fillViewport = "true", то если элементы ScrollView слишком велики, чтобы соответствовать размеру экрана, кнопки становятся невидимыми.Если я использую атрибут android: Weight = 1, то ScrollView получает только 50% экрана, когда экран большой и может уместиться (я хочу, чтобы кнопки занимали небольшой процент, около 10%).Если я установлю для android: Weight более высокие значения, кнопки будут очень маленькими.

Пожалуйста, помогите!Может быть, это что-то простое, что я упустил из виду, но я бился головой много часов!

Ответы [ 5 ]

84 голосов
/ 17 февраля 2012

Только что создал и протестировал.Похоже, вы хотите.

<?xml version="1.0" encoding="utf-8"?>

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

    <LinearLayout
            android:id="@+id/buttons"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center"
            android:layout_alignParentBottom="true">
        <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Custom Button1"/>
        <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Custom Button2"/>
    </LinearLayout>

    <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_above="@id/buttons">
         <!--Scrollable content here-->
        <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">                
            <TextView
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    android:text="test text"
                    android:textSize="40dp"/>
        </LinearLayout>
    </ScrollView>

</RelativeLayout>
9 голосов
/ 02 октября 2014
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">
            <TextView 
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="Hello World"
            />
            <TextView 
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="Hallo Welt"
            />       
        </LinearLayout>
    </ScrollView>
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0">
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Go next page"
            android:layout_alignParentRight="true" />
    </RelativeLayout>

</LinearLayout>
3 голосов
/ 04 июля 2013

Это сработало для меня.Присвойте виду прокрутки вес 1. Поместите все остальные виджеты после вида прокрутки в макет.Представление прокрутки будет расти достаточно, чтобы не блокировать остальные.

Виджеты в режиме прокрутки и покоя внизу

2 голосов
/ 17 февраля 2012

scrollview не может уместиться на экране, потому что вы положили его на линейную разметку, поэтому линейная разметка помещается на экране,

просто попробуйте сделать скроллвью в качестве корневого элемента в XML-макете

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scrollView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
        <!-- Here you can put some XML stuff and BOOM! your screen fit to scrollview -->

    </LinearLayout>
</ScrollView>
0 голосов
/ 27 апреля 2019

Если вы не хотите использовать RelativeLayout , лучше использовать LinearLayout . Этот метод лучше, на мой взгляд.

Просто установите layout_weight равным одному

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...