ScrollView中的布局页脚文本

时间:2015-01-29 22:54:14

标签: android android-layout android-scrollview

我需要在ScrollView的底部显示一个TextView,这样:

  • 如果ScrollView内容的高度小于ScrollView的高度,则文本应位于ScrollView的底部

    +============+
    |  content   |
    |            |
    +------------+
    |   w/space  |
    |            |
    +------------+
    | footer txt |
    +============+
    
  • 如果ScrollView内容的高度大于ScrollView的高度,则文本应直接跟随内容。

    +============+
    |  content   |
    |            |
    |            |
    |  content   |
    |            |
    |            |
    |  content   |
    +============+
    :            : \  
    :  content   :  bottom edge of device
    :------------:
    : footer txt :
    +------------+
    

我有一个程序化的解决方案,但它是一个繁琐的&我一直在寻找需要重新计算的极端情况。请求布局。

我是否可以仅使用XML实现此布局?

2 个答案:

答案 0 :(得分:0)

它应该像在滚动视图布局下创建另一个布局来保存所有内容,然后在内容布局下粘贴页脚文本一样简单。

这是XML中的解决方案:

<?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:id="@+id/scrollView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

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

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

                <!-- PUT YOUR CONTENT IN THIS LAYOUT -->

            </LinearLayout>

            <TextView
                android:id="@+id/footerText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="footer text"
                android:textAppearance="?android:attr/textAppearanceLarge" />

        </LinearLayout>
    </ScrollView>

</LinearLayout>

如果您的所有内容都是统一的,那么您最好的选择是使用ListView并以编程方式设置TextView页脚:

listView.addFooterView(yourTextView);

答案 1 :(得分:0)

我偶然发现了2010年Romain Guy撰写的一篇博文,其中讨论了这个确切的问题以及如何解决它。

http://www.curious-creature.com/2010/08/15/scrollviews-handy-trick/

ScrollView应该具有属性android:fillViewport="true",并且ScrollView的子视图中要展开以填充空间的视图应该是唯一具有指定layout_weight的视图。

我刚刚测试了这种方法,它按预期工作。