0

我是 Android 新手(以前用 Visual Studio 开发...),到目前为止我对布局有疑问:

我想要做的是顶部有一个栏的布局(只是为了放置一些按钮或额外信息)和一个填充屏幕其余部分的滚动视图。到目前为止,这是我的做法:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Home" >

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:background="@android:color/white" >

    <!-- I can put any button or text I want in here -->

</LinearLayout>

<ScrollView
    android:id="@+id/scrollView1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="50dp"

    android:background="@drawable/wallpaper" >


</ScrollView>

这正如我预期的那样工作,但我的问题是我是否以正确的方式进行操作,或者我应该以更好的方式(最有效)进行操作。

提前致谢

4

1 回答 1

1

不推荐绝对定位。例如,如果您需要将高度从 50dp 增加到 100dp,则必须在几个不同的地方更改此值。

我知道至少有两种方法可以改善您的布局。

1)使用RelativeLayout(android:layout_below="@id/linearLayout1"或其对应的layout_above)的功能

<RelativeLayout ...>
    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:background="@android:color/white">
    </LinearLayout>

    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/linearLayout1"
        android:fillViewport="true"
        android:background="@drawable/wallpaper" >
    </ScrollView>
</RelativeLayout>

2)替换为 LinearLayout (并使用android:layout_weight="1.0"

<LinearLayout ...>
    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:background="@android:color/white">
    </LinearLayout>

    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1.0"
        android:fillViewport="true"
        android:background="@drawable/wallpaper" >
    </ScrollView>
</LinearLayout>

这条线android:layout_height="0dip"可能看起来很奇怪。实际上你可以使用match_parent,但是 Eclipse IDE 会突出显示这一行,0dip如果你指定了建议使用android:layout_weight

我还添加android:fillViewport="true"到您的滚动视图中。它表示如果需要,滚动视图内的内容将扩展到全高,您可以在此处阅读有关此属性的信息

于 2013-03-16T09:27:12.777 回答