如何对齐两个LinearLayouts?

时间:2017-08-04 16:10:26

标签: android

我想制作一个基础计算器应用程序,所以我开始为每个数字和操作制作按钮。为了保持对齐,我使用了RelativeLayout,但在它下面我有五个LinearLayout,每个LinerarLayout代表一行按钮。

我的问题如下,在我将layout_alignBottom用于第一行以便将其保留在屏幕底部之后,我尝试使用layout_above将第二行对齐在第一行之上但似乎我无法做到这一点,因为我收到No resource found that matches the given name (at 'layout_above' with value '@id/firstRow').错误,实际上我得到了所有对齐属性的错误。

这是我的xml的一部分

 <LinearLayout
    android:id="@+id/secondRow"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_above="@id/firstRow">

    <Button
        android:id="@+id/b1"
        android:layout_width="85dp"
        android:layout_height="85dp"
        android:text="1" />

        <!-- more buttons -->


</LinearLayout>

<LinearLayout
    android:id="@+id/firstRow"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true">


    <Button
        android:id="@+id/bP"
        android:layout_width="85dp"
        android:layout_height="85dp"
        android:layout_marginLeft="0dp"
        android:text="." />

     <!-- more buttons -->

</LinearLayout>

我如何以第一行位于屏幕底部并且其他一个位于彼此之上的方式对齐LinearLayouts?

3 个答案:

答案 0 :(得分:0)

你这样做的方式比必要的更复杂。

将它们包裹在垂直方向的线性布局中。

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

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/b1"
            android:layout_width="85dp"
            android:layout_height="85dp"
            android:text="1" />

    <!-- more buttons -->

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/b1"
            android:layout_width="85dp"
            android:layout_height="85dp"
            android:text="3" />

    <!-- more buttons -->

    </LinearLayout>

    <!-- Your rows in order from top to bottom -->

</LinearLayout>

答案 1 :(得分:0)

XML是从上到下呈现的,因此,如果要添加对要添加引用的元素之后的元素的引用,则需要调用@+id而不是{{1 }}。在你的情况下,你应该写这个:

@id

这是因为当您运行第一个android:layout_above="@+id/firstRow" 的代码时,Android没有任何使用id“firstRow”注册的元素,因为它尚未编译,因此您需要添加LinearLayout意味着如果稍后找到任何引用,它将被设置,如果没有,它只是在没有引用的情况下对齐视图。

答案 2 :(得分:0)

尝试使用In [49]: np.multiply(np.dot(a,b),c) Out[49]: matrix([[ 32, 64], [ 96, 128]]) android:layout_toStartOf