android工作室重力中心

时间:2017-03-08 03:29:05

标签: android android-layout

我有一个RelativeLayout,里面有一些ImageViews(对于页眉和页脚)。然后,在图像之间的空间中,我设置了一个带有嵌套LinearLayout(也是垂直)的ScrollView(垂直)。

事实是,我无法将LinearLayout内的按钮垂直居中(它们已经水平居中)。是的,我试图使用gravity =" center"无济于事。这是它的样子:

<ScrollView
  android:layout_width = "match_parent"
  android:layout_height = "match_parent"
  android:layout_above = "*Image1*"
  android:layout_below = "*Image2*"
  >

  <LinearLayout
    android:layout_width = "match_parent"
    android:layout_height = "wrap_content"
    android:gravity = "center"
    android:orientation = "vertical"
    >

    <Button><Button/>
    <Button><Button/>
    <Button><Button/>
    <Button><Button/>

  <LinearLayout/>
<ScrollView/>

2 个答案:

答案 0 :(得分:0)

ScrollView需要有一个固定的高度。更像它必须知道里面所有孩子的高度,知道它可以上下滚动多少。因此,它强制其子节点具有wrap_content的高度。

来到你的情况,你的LinearLayout的高度为wrap_content。现在,由于您尝试将LinearLayout的高度包装到LinearLayout的子项,因此子项无法在LinearLayout中垂直移动。因此,您不能在高度为wrap_content的容器中垂直居中。同样,如果宽度为wrap_content,则无法水平居中。

我希望这能清除你的怀疑。 :)

答案 1 :(得分:0)

根据我对问题的理解,可以按如下方式进行:

在滚动视图内的线性布局中添加这些

android:layout_gravity="center"
android:gravity="center"

示例:

<ScrollView
    android:layout_above="@+id/footer"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/header">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:orientation="vertical">


        <Button
            android:id="@+id/btn1"
            android:text="btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <Button
            android:id="@+id/btn2"
            android:text="btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/btn1" />

        <Button
            android:id="@+id/btn3"
            android:text="btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/btn2" />

        <Button
            android:id="@+id/btn4"
            android:text="btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/btn3" />

    </LinearLayout>
</ScrollView>

希望有所帮助