ScrollView杀死我的Android应用程序,我不了解表格视图

时间:2014-03-27 16:38:04

标签: android xml android-layout scrollview

我正在为我的nexus 7平板电脑编写一个小应用程序,我有一个奇怪的错误。据我了解以下xml

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical" >
  <ScrollView>
    <TableRow
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:padding="2dip">
      <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:hint="name"
      android:inputType="text"
      android:textSize="20sp"/>
      <TextView
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:textSize="20sp"
      android:text="smells more like prey than a hunter."/>
    </TableRow>
    <TableRow
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:padding="2dip">
      <TextView
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:textSize="20sp"
      android:text="The spirits spoke to me of a great danger that follows"/>
      <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:hint="name"
      android:inputType="text"
      android:textSize="20sp"/>
    </TableRow>
  </ScrollView> 

</TableLayout>

应该生成一个带有两行的可滚动应用程序,每行都写有一个带有灰色name的文本字段,文本环绕着它,以及将在将要尝试的文本之前或之后写入的其他文本填满屏幕。但是,当我编译它时,应用程序崩溃(unfortunately, has stopped)。如果我删除ScrollView属性,则两条线的长度相同,EditText在横向模式下占用每条线的一半空间。在纵向模式下,第一行仅包含EditText字段,第二行仅包含TextView字段。它让我觉得桌子试图将两条线条放到相同的长度,但我不明白为什么。

我该如何解决这个问题? 点评:
我使用aide生成的库结构,我只使用它在平板电脑上编译我的代码。

1 个答案:

答案 0 :(得分:1)

将您的表格布局全部放在scrollview中。 scrollview只能托管一个直接孩子,但那个孩子可以有很多孩子!你还需要一个scrollview的高度和宽度

这里

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


<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:orientation="vertical" >
    <LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:orientation="vertical" >
      <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:hint="name"
      android:inputType="text"
      android:textSize="20sp"/>
      <TextView
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
        android:gravity="center"
      android:textSize="20sp"
      android:text="smells more like prey than a hunter."/>
    </LinearLayout>
  <LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:orientation="vertical" >
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:hint="name"
      android:inputType="text"
      android:textSize="20sp"/>

      <TextView
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:textSize="20sp"
      android:gravity="center"
      android:text="The spirits spoke to me of a great danger that follows"/>

  </LinearLayout>

</TableLayout>
</ScrollView>  

应该适用于你。

尝试上面的布局而不是你的布局让我知道它是否有帮助。说实话我认为你想要一个listview和一个适配器......