【问题标题】:centerHorizontal RelativeLayout in ScrollViewScrollView 中的 centerHorizo​​ntal RelativeLayout
【发布时间】:2013-07-01 17:39:09
【问题描述】:

我想在 ScrollView 中将 RelativeLayout 居中,如下所示:

我只有在使用RelativeLayout时才能实现这种布局。但是由于我还需要使用 ScrollView,所以它搞砸了。不知何故android:layout_centerHorizontal="true" 不会申请RelativeLayout 然后......输出看起来像这样:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffcc33"
android:paddingLeft="7dp"
android:paddingRight="7dp"
android:paddingTop="10dp"
tools:context=".MainActivity" >

<EditText
    android:id="@+id/search_box"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_toLeftOf="@+id/search_button"
    android:ems="5"
    android:hint="@string/search_hint" >

    <requestFocus />
</EditText>

<Button
    android:id="@+id/search_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:text="@string/search_button" />

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_below="@+id/search_box"
    android:layout_marginTop="15dp"
     >

<RelativeLayout
    android:layout_width="225dp"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true" >

    <Button
        android:id="@+id/btn_lihatoidud"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@android:color/transparent"
        android:drawableTop="@drawable/lihatoidud"
        android:layout_alignParentTop="true"
        android:text="Lihatoidud"
        android:textSize="18sp" />

    <Button
        android:id="@+id/btn_kypsetised"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/btn_lihatoidud"
        android:layout_marginTop="15dp"
        android:background="@android:color/transparent"
        android:drawableTop="@drawable/kypsetised"
        android:text="Küpsetised"
        android:textSize="18sp" />

    <Button
        android:id="@+id/btn_seenetoidud"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/btn_kypsetised"
        android:layout_marginTop="15dp"
        android:background="@android:color/transparent"
        android:drawableTop="@drawable/seenetoidud"
        android:text="Seenetoidud"
        android:textSize="18sp" />

    <Button
        android:id="@+id/btn_juustutoidud"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/btn_seenetoidud"
        android:layout_marginTop="15dp"
        android:background="@android:color/transparent"
        android:drawableTop="@drawable/juustutoidud"
        android:text="Juustutoidud"
        android:textSize="18sp" />

    <Button
        android:id="@+id/btn_lisandid"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/btn_juustutoidud"
        android:layout_marginTop="15dp"
        android:background="@android:color/transparent"
        android:drawableTop="@drawable/lisandid"
        android:text="Lisandid"
        android:textSize="18sp" />

    <Button
        android:id="@+id/btn_supid"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:background="@android:color/transparent"
        android:drawableTop="@drawable/supid"
        android:text="Supid"
        android:textSize="18sp" />

    <Button
        android:id="@+id/btn_voileivad"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/btn_supid"
        android:layout_marginTop="15dp"
        android:background="@android:color/transparent"
        android:drawableTop="@drawable/voileivad"
        android:text="Võileivad"
        android:textSize="18sp" />

    <Button
        android:id="@+id/btn_pudrud"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/btn_voileivad"
        android:layout_marginTop="15dp"
        android:background="@android:color/transparent"
        android:drawableTop="@drawable/pudrud"
        android:text="Pudrud"
        android:textSize="18sp" />

    <Button
        android:id="@+id/btn_joogid"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/btn_pudrud"
        android:layout_marginTop="15dp"
        android:background="@android:color/transparent"
        android:drawableTop="@drawable/joogid"
        android:text="Joogid"
        android:textSize="18sp" />

</RelativeLayout>
</ScrollView>

【问题讨论】:

    标签: android xml layout scrollview android-relativelayout


    【解决方案1】:

    评论不允许我格式化...

    这就是我要做的,将整体布局更改为线性布局,这样您就可以确保它们的 editText 和按钮位于顶部。它看起来像这样......

    <LinearLayout
        ...android:orientation="vertical">
    
        <LinearLayout
             ...android:orentation="horizontal">
             <Edit Text>
             <Button>
         />
         <ScrollView
            ...>
            <RelativeLayout
                 ..../>
         />
    />
    

    【讨论】:

    • 你的方法也有同样的问题。我最终在 ScrollView 和 RelativeLayout 之间添加了一个 LinearLayout。效果很好!
    【解决方案2】:

    除非另有说明,否则ScrollView 会将其内容折叠到核心大小。试试看:

    1. 使用将ScrollView 的两侧显式锁定到顶部RelativeLayout 的位置

      android:layout_below="@id/search_box"
      android:layout_alignParentLeft="true"
      android:layout_alignParentRight="true"
      android:layout_alignParentBottom="true"
      
    2. 强制ScrollView不要折叠:

      android:fillViewport="true"
      

    【讨论】:

      【解决方案3】:

      您是否尝试过使用重力?试试这个:

      android:layout_gravity="center"
      

      在您的 RelativeLayout 中。

      android:gravity="center"
      

      也可能有效。我总是忘记哪个做哪个。

      【讨论】:

      • 好吧,一方面 layout_gravity 符合我的需要。另一方面,它拉伸了RelativeLayout,所以它隐藏在EditText 视图后面。有什么想法吗?
      • 你把重力放在了哪个RelativeLayout?我不确定,但听起来你把它放在整体布局中而不是在子布局中。
      • 我把它放入包含按钮的那个。结果如下:oi40.tinypic.com/96hv6d.jpg
      • 嗯,这很奇怪,我不完全确定那里发生了什么。我在相对布局方面没有丰富的经验,但你不能将它设置在该文本视图的下方吗?这是我要做的,将整体布局更改为线性布局,这样您就可以确保它们的 editText 和 button 位于顶部。它看起来像这样......
      猜你喜欢
      • 2017-04-04
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 2015-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多