在Scrollview屏幕底部定位按钮并设置比例宽度

时间:2014-08-09 08:43:21

标签: android layout scrollview

我想实现如下所示的屏幕布局,屏幕顶部有一个Scrollview,以及一个固定在屏幕底部的2个按钮块。我还希望按钮占据屏幕宽度的固定比例,并且在水平布局中使用了重量来实现这一点。 Desired layout

ScrollView行是从数据库表中填充的,可能包含太多行,无法在单个屏幕上显示。因此我只希望ScrollView占据屏幕顶部的固定比例,以便按钮始终显示在屏幕的底部。

我尝试在这里调整解决方案:Android ScrollView and buttons at bottom of the screen - 替换我自己的界面元素,但这导致ScrollView占据整个屏幕,而按钮根本不可见。我怀疑这是因为我的“layoutContainer”LinearLayout中的权重与建议的解决方案的设计相冲突。

我目前的代码如下。这会使ScrollView和Button变好,直到Scrollview变得太大 - 当发生这种情况时,按钮会从屏幕底部消失。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background"
    android:orientation="vertical"
    tools:context="com.itm.timer.ItemActivity"
    tools:ignore="MergeRootFrame" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="3"
        android:gravity="top"
        android:text="@string/activity_meal_item_textview1"
        android:textSize="16sp"
        android:textStyle="bold" />

    <ScrollView
        android:id="@+id/scrollViewRecords"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="75" >

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

    <LinearLayout
        android:id="@+id/layoutContainer"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:orientation="horizontal" >

        <RelativeLayout
            android:layout_width="0dip"
            android:layout_height="0dip"
            android:layout_weight="2" >
        </RelativeLayout>

        <RelativeLayout
            android:layout_width="0dip"
            android:layout_height="fill_parent"
            android:layout_weight="20" >

            <Button
                android:id="@+id/btnMealPlan"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:drawableLeft="@drawable/clipboard"
                android:onClick="onClickMealPlan"
                android:text="Show Meal Plan" />

            <Button
                android:id="@+id/btnStartTimer"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/btnMealPlan"
                android:drawableLeft="@drawable/starttimer"
                android:onClick="onClickStartTimer"
                android:text="Set Reminders" />
        </RelativeLayout>

        <RelativeLayout
            android:layout_width="0dip"
            android:layout_height="0dip"
            android:layout_weight="2" >
        </RelativeLayout>
    </LinearLayout>


</LinearLayout>

如何实现我想要的任何想法,或者如何简化我的设计以达到在屏幕上固定位置容纳ScrollView和按钮的目的?

3 个答案:

答案 0 :(得分:1)

尝试这样可以帮到你,

<LinearLayout 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:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="top"
        android:padding="5dp"
        android:text="MeatItem"
        android:textSize="16sp"
        android:textStyle="bold" />

    <ScrollView
        android:id="@+id/scrollViewRecords"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_weight="1"
        android:background="@android:color/holo_blue_light" >

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

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="5dp"
                android:text="ScoollView"
                android:textSize="16sp"
                android:textStyle="bold" />
        </LinearLayout>
    </ScrollView>

    <LinearLayout
        android:id="@+id/layoutContainer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp"
        android:layout_marginTop="10dp"
        android:orientation="vertical" >

        <Button
            android:id="@+id/btn1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@android:color/holo_blue_dark"
            android:text="Button1"
            android:textColor="@android:color/white" />

        <Button
            android:id="@+id/btn2"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:background="@android:color/holo_blue_dark"
            android:text="Button2"
            android:textColor="@android:color/white" />

        <Button
            android:id="@+id/btn3"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:background="@android:color/holo_blue_dark"
            android:text="Button3"
            android:textColor="@android:color/white" />
    </LinearLayout>

</LinearLayout>

答案 1 :(得分:0)

请尝试这种方式,希望这有助于您解决问题。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background"
    android:orientation="vertical"
    tools:context="com.itm.timer.ItemActivity"
    tools:ignore="MergeRootFrame"
    android:padding="10dp" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="top"
        android:text="@string/activity_meal_item_textview1"
        android:textSize="16sp"
        android:textStyle="bold" />

    <ScrollView
        android:id="@+id/scrollViewRecords"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" >

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

    <LinearLayout
        android:id="@+id/layoutContainer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <View
            android:layout_width="0dp"
            android:layout_height="1"
            android:layout_weight="0.10"/>

        <LinearLayout
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="0.80" 
            android:orientation="vertical">

            <Button
                android:id="@+id/btnMealPlan"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:drawableLeft="@drawable/clipboard"
                android:onClick="onClickMealPlan"
                android:text="Show Meal Plan" />

            <Button
                android:id="@+id/btnStartTimer"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:drawableLeft="@drawable/starttimer"
                android:onClick="onClickStartTimer"
                android:text="Set Reminders" />

            <Button
                android:id="@+id/btnStartTimer"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:drawableLeft="@drawable/starttimer"
                android:onClick="onClickStartTimer"
                android:text="Set Reminders" />
        </LinearLayout>

        <View
            android:layout_width="0dp"
            android:layout_height="1"
            android:layout_weight="0.10"/>
    </LinearLayout>
</LinearLayout>

答案 2 :(得分:0)

只需使用layout_height =&#34; 0dp&#34;和layout_weight =&#34; 1&#34;在你的滚动视图中。