ScrollView仅在Android的部分屏幕上显示

时间:2011-02-22 14:50:19

标签: android scrollview

我有一个有两个部分的屏幕。我希望顶部的一个是静态的,而下一个的TableLayout是可滚动的。我尝试将ScrollView添加到屏幕的下半部分,但是当使TableLayout可滚动时,顶部会消失。

如何将顶部静态部件与可滚动的下部组合?

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:id="@+id/LinearLayout01"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_weight="9" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/title_shape">  
    <Button 
        android:id="@+id/btnBack" 
        android:text="@string/titleCreateTest"
        style="@style/Bar_buttonBack">
    </Button>
    <TextView android:layout_weight="6" 
        android:id="@+id/titleFlashcard" 
        android:text="@string/titleStatistic" 
        style="@style/TitleStyle">
    </TextView> 
</LinearLayout>
 <ScrollView
  android:id="@+id/ScrollView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:id="@+id/LinearLayout2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
<TableLayout 
    android:id="@+id/table_layout"
    style="@style/TableLayoutStyle">
 <TableRow 
     android:id="@+id/table_row1">
    <TextView
            android:id="@+id/tv1"
            android:text="@string/tvRecord" 
            style="@style/TableRowStyle"/>
    <TextView
            android:id="@+id/tv1v"
            style="@style/TableRowStyleColumn2"/>
  </TableRow>
  <View
    style="@style/TableRowSeparator"/>
     <TableRow
     android:id="@+id/table_row2">
        <TextView
            android:id="@+id/tv2"
            android:text="@string/tvMedium" 
            style="@style/TableRowStyle"/>
        <TextView
            android:id="@+id/tv2v"
            style="@style/TableRowStyleColumn2"/>
    </TableRow>
      <View
    style="@style/TableRowSeparator"/>
    <TableRow
    android:id="@+id/table_row3">
        <TextView
            android:id="@+id/tv3"
            android:text="@string/tvWorst" 
            style="@style/TableRowStyle"/>
        <TextView
            android:id="@+id/tv3v"
            style="@style/TableRowStyleColumn2"/>
    </TableRow>
    </TableLayout> 
   <TableLayout 
    android:id="@+id/table_layout2"
    style="@style/TableLayoutStyle">
        <TableRow
          android:id="@+id/table_row4">
          <TextView
            android:id="@+id/tvDate"
            style="@style/TableRowStyle"/>
            <TextView
            android:id="@+id/tvResult"
            style="@style/TableRowStyleColumn2"/>
     </TableRow>
    <View
    android:id="@+id/rowseparator"
    style="@style/TableRowSeparator"/>
</TableLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>

1 个答案:

答案 0 :(得分:1)

同时使用fill_parentandroid:weight可能会非常棘手。有一个关于它的讨论,但我找不到它。

作为你的第二个线性布局(带有按钮和textview的布局)设置为fill_parent,我希望它能占用根布局中的所有空间,但是通过权重设置,它似乎表现得像一个“反向权重”并让ScrollView占用所有空间。

最好在顶部给出一个wrap_content的高度,并将fill_parent赋予ScrollView。如果您愿意,可以设置顶部的高度= wrap_content和weight = 0,底部的高度= 0,权重= 1,这样就可以占用所有空间。

如果您将ScrollView设置为wrap_content,则其宽度(或高度)与其内容一样多。是滚动还是只是在屏幕外滚动?

LinearLayout内的ScrollView无用,除非您计划添加其他内容。

最后一点:xmlns:android="...."应仅保留在根元素中。

Android布局框架有时候是一个挑战,我希望这有所帮助。