如何克服TextView不适合屏幕并将其他内容从屏幕上移开的问题?

时间:2013-03-06 21:50:55

标签: android xml android-layout textview android-xml

我正在尝试构建一个简单的表单,我想在顶部添加一个显示消息的注释/标题/标题。我试图这样做,但文字已经离开屏幕,它下面的东西也被推掉了。我该怎么解决这个问题?

以下是我的layout.xml,此处位于pastebin:http://pastebin.com/fNBfQiz8

<TableLayout
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:shrinkColumns="1"
   android:stretchColumns="1" >

   <TableRow
       android:layout_marginBottom="2sp"
       android:layout_marginTop="2sp"
       android:layout_width="match_parent" >
        <TextView
           android:layout_width="match_parent"
           android:text="You can only add a spot based on your current location" />

    </TableRow>

   <TableRow
       android:layout_marginBottom="2sp"
       android:layout_marginTop="2sp" >
        <TextView android:text="Name:" />
        <EditText android:id="@+id/name" />
    </TableRow>

   <TableRow
       android:layout_marginBottom="2sp"
       android:layout_marginTop="2sp" >
        <TextView android:text="Address:" />
        <EditText android:id="@+id/addr" />
    </TableRow>

   <TableRow
       android:layout_marginBottom="2sp"
       android:layout_marginTop="2sp" >
        <TextView android:text="Type:" />
        <Spinner
           android:id="@+id/spinnerType"
           style="@style/AppBaseTheme"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:entries="@array/types_array"
           android:prompt="@string/types_prompt" />
    </TableRow>

   <TableRow
       android:layout_marginBottom="2sp"
       android:layout_marginTop="2sp" >
        <TextView android:text="Terrain:" />
        <Spinner
           android:id="@+id/spinnerTerrain"
           style="@style/AppBaseTheme"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:entries="@array/ratings_array"
           android:prompt="@string/ratings_prompt" />
    </TableRow>

    <TableRow>
        <TextView android:text="Difficulty:" />
        <Spinner
           android:id="@+id/spinnerDifficulty"
           style="@style/AppBaseTheme"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:entries="@array/ratings_array"
           android:prompt="@string/ratings_prompt" />
    </TableRow>

   <TableRow
       android:layout_marginBottom="2sp"
       android:layout_marginTop="2sp" >
        <TextView android:text="Description:" />
        <EditText
           android:id="@+id/desc"
           android:gravity="top"
           android:inputType="textMultiLine"
           android:lines="2"
           android:maxLines="2"
           android:scrollHorizontally="false" />
    </TableRow>

    <Button
       android:id="@+id/save"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="Save"
                    android:layout_marginBottom="2sp"
       android:layout_marginTop="2sp" />
</TableLayout>

1 个答案:

答案 0 :(得分:0)

我不确定我完全理解你在没看到照片的情况下遇到了什么问题,但我看了看你的pastebin。作为一般性注释,布局中的根视图(在您的情况下为ScrollView)的宽度和高度可能应该为match_parentfill_parent,否则您可能会看到一些奇怪的渲染空白区域,其中没有布局覆盖屏幕或获得一些奇怪的滚动行为。

Here is a good tutorial which does nifty things with the spacing of the columns in TableLayouts and may help you figure out why your views are getting cut off and otherwise not fitting into the proper space.特别注意他在TableRows及其子项上使用的属性,以实现他想要的布局。

至于你想要显示一些标题信息的问题,我可以想到两个选项。

  1. 如果您希望它们在TableLayout滚动时显示为固定在屏幕顶部,请创建一个LinearLayout作为布局的根视图,并将其方向设置为垂直。将标题添加为此LinearLayout的第一个子项,将ScrollView添加为第二个子项。
  2. 如果您希望标题信息与表格一起滚动,请将ScrollView作为根目录并创建一个LinearLayout(再次以垂直方向)作为它的唯一直接子项。将标题信息添加为LinearLayout的第一个子项,将TableLayout添加为第二个。
  3. 希望这会有所帮助。如果你发布了你现在看到的截图以及你想要的布局的某种类型的模型,它将有助于隔离你所拥有的问题,并帮助我们在社区提供支持。