布局无法按计划进行。重量设置但超过屏幕边缘

时间:2012-12-26 22:59:36

标签: android-layout

我正在尝试创建一个新的布局。我使用的最后一个布局是GridLayout,基本上创建了一个包含3列和8行的表。使用rowspan,我能够在Eclipse中实现我想要的外观,但是我的屏幕在我的手机上的时间稍长,然后是Eclipse,它显示第1列和第2列看起来很好,但是3向右拉伸。

新布局如下所示: enter image description here

**你可以看到右侧的箭头正好在屏幕的边缘,我不知道为什么。我正在尝试创建一个在不同设备上使用时可以适当缩放的布局。

XML代码如下:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TableRow
        android:id="@+id/tableRow1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:weightsum="1.0" >

            <ImageView
                android:id="@+id/arrowLeft"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight=".33"
                android:src="@drawable/arrowleftoff" />

            <Space 
                android:layout_width="0dp" 
                android:layout_height="match_parent"
                android:layout_weight=".34" />

            <ImageView
                android:id="@+id/arrowRight"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight=".33"
                android:src="@drawable/arrowrightoff" />



        </LinearLayout>

    </TableRow>

    <TableRow
        android:id="@+id/tableRow2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >
        </LinearLayout>

    </TableRow>

    <TableRow
        android:id="@+id/tableRow3"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >
        </LinearLayout>

    </TableRow>

</TableLayout>

1 个答案:

答案 0 :(得分:0)

问题是由于缺乏对Eclipse如何处理布局的理解造成的。首先,Eclipse可视化布局编辑器中显示的屏幕是窗口顶部所选设备(在我的案例中为Nexus S)的外观“示例”。

其次,我使用的布局不是锚定到某些元素或父级。因此,当屏幕尺寸发生变化时,布局会随之改变。

结论:我现在正在使用和理解RelativeLayout,一旦你搞清楚它就会产生奇迹。

这是一个很好的资源,它真正帮助我理解了发生了什么:Mobile Tuts Plus: Layout Basics