Android:尝试在根ScrollView中居中RelativeLayout

时间:2013-01-30 23:30:17

标签: android

我希望ScrollView能够填充整个屏幕,并且相对布局要么以ScrollView为中心,要么内容居中,要么填充ScrollView并使其内容居中。如果应用程序在小屏幕上运行,则scrollView就在那里。

我只使用RelativeLayout作为根实现了效果,但是当我将scrollView添加为包装器时,我无法将其置于中心,而RelativeLayout只是添加到顶部。我试过检查RelativeLayout的layout_height,但这也不起作用,只是给了我一个警告。

有趣的是它在Eclipse中的图形布局上看起来很好。

<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"
tools:context=".MainActivity" >

<RelativeLayout
    android:id="@+id/RelativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:fillViewport="true"
    android:gravity="center" >
....

4 个答案:

答案 0 :(得分:4)

经过多次努力,这才是最终奏效的。

<LinearLayout 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:gravity="center"
tools:context=".MainActivity" >

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <RelativeLayout
        android:id="@+id/RelativeLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center" >

答案 1 :(得分:3)

您始终可以将RelativeLayout放在LinearLayout中,以允许它居中。

您遇到的问题是ScrollView没有重力属性,因此您需要ScrollView内的另一个接受重力的布局。

<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"
   tools:context=".MainActivity" >

  <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" 
        android:layout_gravity="center"
        android:gravity="center">

     <RelativeLayout
         android:id="@+id/RelativeLayout1"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_gravity="center"
         android:fillViewport="true"
         android:gravity="center" >
      </RelativeLayout>
   </LinearLayout>
</ScrollView>

答案 2 :(得分:0)

尝试将ScrollViewRelativeLayout的高度和宽度更改为fill_parent。如果这不起作用,请发布您的整个xml文件。

答案 3 :(得分:0)

将另一个rootviewRelativeLayoutLinearLayout,放在现有的RelativeLayout中,并将这些属性添加到新的属性中。

android:layout_height="wrap_content" 
android:layout_centerVertical="true"