0

我已经为我正在开发的测试程序实现了一个简单的布局。屏幕上只有一个徽标图像、一个带有程序标题的 textView 和一个按钮。我正在尝试使用线性布局,因为我希望每个元素都换行。就我而言,图像和文本可能非常接近,但我希望按钮出现在页面底部。我不明白我做错了什么。我还使用“底部”值将 android:layoutGravity 属性添加到按钮中,但没有任何改变。这是我正在使用的代码:

<ScrollView 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"
android:background="@drawable/background">

<LinearLayout 
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="0sp"
tools:context=".DiLand"
android:orientation="vertical" >

     <ImageView
         android:id="@+id/logo"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_marginTop="0sp"
         android:src="@drawable/logo2" />

     <TextView
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/titleApp"
        android:textColor="@color/titleColor"
        android:textSize="35sp"
        android:gravity="top"
        android:layout_marginTop="0sp"
        />

    <Button
        android:layout_width="140sp"
        android:layout_height="50sp"
        android:text="@string/startButton"
        android:id="@+id/start_button"
        android:background="@drawable/start_button"
        android:textColor="@color/whiteColor"
        android:textSize="30sp"
        android:layout_gravity="bottom"
    />

</LinearLayout>
</ScrollView>

感谢帮助!

4

4 回答 4

1

原因是match_parent/的孩子的fill_parent高度ScrollView被忽略了。如果它受到尊重,那么ScrollView它将毫无用处,因为它的内容和滚动视图窗口将具有相同的高度。

您可以在 上设置android:fillViewPort="true"属性ScrollView以使ScrollView子级扩展到其父级高度(如果它更小)。如果子项高于ScrollView父项,则此属性无效。这样,您可以将按钮始终位于底部,同时将其保留在滚动内容中。

于 2013-09-13T10:27:45.667 回答
1

将 LinearLayout 更改为 RelativeLayout,其中:

android:orientation="vertical"

因此,每个视图的布局仍然是一个新行,并在按钮上添加:

android:layout_alignParentBottom="true"

这样按钮将位于屏幕/布局的底部。确保 ScrollView 的父级填满整个屏幕。

编辑:添加到 imageView :

android:layout_above="@+id/title"

添加到文本视图:

android:layout_above="@+id/start_button"
android:layout_below="@+id/logo"

添加到按钮:android:layout_below="@+id/title"

立即尝试并编写。

于 2013-09-13T10:02:30.230 回答
1

从中删除 Scrollview,它正在产生问题,并替换下面的代码它的工作,我已经测试过。

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="0sp"
         >

        <ImageView
            android:id="@+id/logo"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="0sp"
            android:src="@drawable/ic_launcher" />

        <TextView
            android:id="@+id/title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="0sp"
            android:gravity="top"
            android:text="Title"
            android:textColor="#ffffff"
            android:textSize="35sp" />

        <View
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1" >
        </View>

        <Button
            android:id="@+id/start_button"
            android:layout_width="140sp"
            android:layout_height="50sp"
            android:layout_gravity="bottom|center_horizontal"
            android:text="Start"
            android:textColor="#ffffff"
            android:textSize="30sp" />
    </LinearLayout>

于 2013-09-13T10:14:39.277 回答
0

它是 LinearLayout 所以它不会为你分配所有空间,它只会按顺序分配你。试试下面的代码:

<ScrollView 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"
android:background="@drawable/background">

<LinearLayout 
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="0sp"
tools:context=".DiLand"
android:orientation="vertical" >

     <ImageView
         android:id="@+id/logo"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_marginTop="0sp"
         android:src="@drawable/logo2" />

     <TextView
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/titleApp"
        android:textColor="@color/titleColor"
        android:textSize="35sp"
        android:gravity="top"
        android:layout_marginTop="0sp"
        />

<View

android:layout_height="0dp"
android:layout_weight="1"
android:layout_width="match_parent">
</View>

    <Button
        android:layout_width="140sp"
        android:layout_height="50sp"
        android:text="@string/startButton"
        android:id="@+id/start_button"
        android:background="@drawable/start_button"
        android:textColor="@color/whiteColor"
        android:textSize="30sp"
        android:layout_gravity="bottom"
    />

</LinearLayout>
</ScrollView>
于 2013-09-13T09:59:22.987 回答