在Scrollview中居中RelativeLayout

时间:2013-12-15 22:48:37

标签: android scrollview relativelayout

我正在尝试将RelativeLayout的位置设置在屏幕的中心。 RelativeLayout位于ScrollView内部,具有以下代码。问题是,在我的模拟器(Android 4.2)中,它工作得很好,但是如果我在2.3版本上执行它,那么RelativeLayout会出现在屏幕的左上角。我无法弄清楚为什么会这样。

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background" >

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_marginTop="75dp"
    android:layout_marginLeft="50dp">
    <EditText
       android:id="@+id/when"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginLeft="10dip"
       android:layout_marginRight="10dip"
       android:layout_marginBottom="20dip"
       android:inputType="textMultiLine"
       android:scrollHorizontally="false"
       android:minLines="1"
       android:maxLines="3"
       android:imeOptions="actionDone|flagNoEnterAction" />  
   <EditText
       android:id="@+id/memory"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginRight="10dip"
       android:layout_marginTop="5dip"
       android:layout_below="@id/when"
       android:inputType="textMultiLine"
       android:scrollHorizontally="false"
       android:minLines="1"
       android:imeOptions="actionDone|flagNoEnterAction"
       android:hint="@string/add_memory_hint"
       android:background="#6656B3D4"  /> 
    <Button
        android:id="@+id/addMemory"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_below="@id/memory"
        android:layout_marginTop="20dp"
        android:padding="13dp"/>
    <Button
        android:id="@+id/neverMind"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_below="@id/addMemory"
        android:layout_marginTop="20dp"
        android:padding="13dp"/>


</RelativeLayout>

</ScrollView>

我真的很感激一些见解。谢谢。

3 个答案:

答案 0 :(得分:1)

在相对布局中,尝试添加以下标记。它应该工作。

android:layout_gravity="center"

尝试将背景颜色添加到相对布局和滚动视图,并查看更改如何影响。仅用于调试目的。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@android:color/darker_gray" >

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_marginTop="75dp"
    android:layout_marginLeft="50dp"

    android:background="@android:color/black">

我尝试使用OS 4.4.2进行设备

答案 1 :(得分:0)

这样说吧

scrollview
    linearLayout (gravity: center)
         YOUR relativelayour
         /YOUR relativelayour
    /linearLayout
/scrollview

虽然我不明白为什么你想在中心的滚动视图中制作一些东西

答案 2 :(得分:0)

最简单的方法是从您的margin中移除RelativeLayout并将其LinearLayoutandroid:gravity="center" RelativeLayoutScrollView一起包裹起来graviy两者都没有 <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/background" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center"> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <EditText android:id="@+id/when" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dip" android:layout_marginRight="10dip" android:layout_marginBottom="20dip" android:inputType="textMultiLine" android:scrollHorizontally="false" android:minLines="1" android:maxLines="3" android:imeOptions="actionDone|flagNoEnterAction" /> <EditText android:id="@+id/memory" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="10dip" android:layout_marginTop="5dip" android:layout_below="@id/when" android:inputType="textMultiLine" android:scrollHorizontally="false" android:minLines="1" android:imeOptions="actionDone|flagNoEnterAction" android:hint="@string/add_memory_hint" android:background="#6656B3D4" /> <Button android:id="@+id/addMemory" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_below="@id/memory" android:layout_marginTop="20dp" android:padding="13dp"/> <Button android:id="@+id/neverMind" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_below="@id/addMemory" android:layout_marginTop="20dp" android:padding="13dp"/> </RelativeLayout> </LinearLayout> </ScrollView> ,AFAIK。像这样的东西

orientation

我还从RelativeLayout删除了ViewGroup,因为orientation没有{{1}}属性。