强制android进一步滚动

时间:2012-09-11 10:27:52

标签: android android-layout scrollview

正如你所看到的,我有一个底栏(它没有使用TabHost或任何东西,部分是因为显然它的折旧但也部分因为这只是在应用程序中的两个活动所以我不需要做一个选项卡主持两页)。无论如何,标签栏下面有“内容”。 Android不会进一步滚动,因为它看到内容是可见的,但事实并非如此。

我的问题是将内容放在标签栏上方的最佳方式。

我有一些想法:

  1. 设定高度的透明图像(因为标签栏设置了高度)和wrap_content的宽度。这不起作用。
  2. 使用标签栏的背景,使其看起来不显眼。
  3. 使底栏不透明,并将任何东西放在那里,设定高度。
  4. 您可能对我的xml结构感兴趣:

     <RelativeLayout>
       <ScrollView>
         <LinearLayout>
           <RelativeLayout>
             <LinearLayout>
    
             </LinearLayout>
    
             <LinearLayout>
    
             </LinearLayout>
           </RelativeLayout>
         </LinearLayout>
       </ScrollView>
       <LinearLayout>
         TAB BAR
       </LinearLayout>
     </RelativeLayout>
    

    screenshot

4 个答案:

答案 0 :(得分:3)

如果您的TAB BAR具有固定高度,则可以设置ScrollView margin bottom属性。这将始终显示您的ScrollView数据高于TAB BAR

答案 1 :(得分:0)

除了@Antarix Tandon的回答,您可以将根相对布局更改为垂直线性布局。

答案 2 :(得分:0)

除非另有说明,否则

RelativeLayout愉快地将所有孩子放在彼此之上。一些想法来解决它:

  • 将前RelativeLayout更改为LinearLayoutorientation="vertical"并将ScrollView layout_weight指定为非零值,以便标签栏始终为在底部,滚动视图占用所有剩余的垂直空间。

  • 保留RelativeLayout,但首先使用layout_alignParentBottom="true"布置标签栏,然后使用layout_above="@id/your_tabbar_id"布置滚动视图。

答案 3 :(得分:0)

在xml中为标签栏指定一个视图ID,然后将其后面显示的视图设置为“layout_above”标签栏视图,并确保它们都位于相同的RelativeLayout内。

所以,例如:

<RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

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

       <LinearLayout
            android:id="@+id/top_area"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_above="@+id/bottom_bar"
            android:orientation="vertical" /> 
 </RelativeLayout>

这将导致后面的内容被推到上面,然后您可以将top_area布局放入滚动视图中,然后滚动视图可以滚动并始终位于底部栏上方。

例如:

<ScrollView 
    android:id="@+id/scroller"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_above="@+id/bottom_bar" >
   <LinearLayout
        android:id="@+id/top_area"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" />
</ScrollView>

这会将scrollview放在底栏上方,top_area布局包含在其中并且可滚动