对齐左/中/右LinearLayout - Android

时间:2014-08-30 23:59:17

标签: android layout android-studio alignment

这应该很简单,但是因为我是Android开发的新手,我问。我基本上想用简单的按钮(之前的/ home / next)在我的游戏底部创建一个静态菜单栏。但是我对齐那些因为 android:layout_alignParentRight =" true" 似乎无法完成工作。我也尝试过重力,但两者都不起作用。我现在的代码:

<LinearLayout
    android:id="@+id/bottomBar"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:layout_alignParentBottom="true"
    android:orientation="horizontal"
    android:gravity="center_vertical">


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Button"
        android:id="@+id/previousButton"
        android:layout_alignBottom="@+id/bottomBar"
        />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Button"
        android:id="@+id/nextButton"
        android:layout_alignBottom="@+id/bottomBar"
        />
</LinearLayout>

编辑:这是我的所有布局xml文件:

    <RelativeLayout 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:id="@+id/container"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="menelaos.example.com.geolearning.QuizActivity">
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ScrollView01"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/quizTableLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
</TableLayout>
<TableLayout
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:id="@+id/answerTableLayout"
       android:layout_below="@+id/quizTableLayout">
</TableLayout>
    </LinearLayout> </ScrollView>
<RelativeLayout 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:id="@+id/bottomBar">
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerVertical="true"
        android:orientation="horizontal" >
        <Button
            android:id="@+id/previousButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button" />
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/nextButton"
            android:layout_toRightOf="@id/previousButton"/>
    </LinearLayout>
</RelativeLayout>

3 个答案:

答案 0 :(得分:4)

您必须使用RelativeLayout

尝试这样的事情:

<RelativeLayout 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" >

<Button
    android:id="@+id/previousButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:text="New Button" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="New Button"
    android:layout_alignParentBottom="true"
    android:id="@+id/nextButton"
    android:layout_toRightOf="@id/previousButton"
    />

</RelativeLayout>

修改

然后尝试:

<RelativeLayout 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:id="@+id/bottomBar">
    />

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerVertical="true"
    android:orientation="horizontal" >

    <Button
    android:id="@+id/previousButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="New Button" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="New Button"
    android:id="@+id/nextButton"
    android:layout_toRightOf="@id/previousButton"/>

</LinearLayout>

</RelativeLayout>

编辑2

好的,如果我理解正确的话: 您需要一个由滚动视图和屏幕底部的视图组成的布局,其中有两个按钮,一个与屏幕左侧对齐,另一个与右侧对齐。 我认为以下布局建议可以为您解决。然而,如果没有看到您当前的布局,我无法清楚地了解您希望布局如何。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/bottomBar"
android:layout_width="match_parent"
android:layout_height="match_parent" 
android:orientation="vertical">
    />

<ScrollView
    android:id="@+id/scrollView1"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="420dp"
        android:orientation="vertical" >
    </LinearLayout>
</ScrollView>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/previousButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="left"
        android:text="New Button" 
        android:layout_alignParentLeft="true"/>

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

</RelativeLayout>

</LinearLayout>

编辑3

要获得第3个按钮,只需在最后一个Button视图后面添加XML:

<Button
        android:id="@+id/center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Center" 
        android:layout_toRightOf="@id/previousButton" 
        android:layout_toLeftOf="@id/nextButton"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp"/>

我添加了marginLeftmarginRight,以便按钮之间有距离,因为我认为这就是您想要的。

答案 1 :(得分:0)

您不能在LinearLayout中使用xml属性alignParentBottom。它适用于RelativeLayout。

其次,属性gravity只定位标签的内容(它会将按钮放在页面的中心垂直)

试试这个

<RelativeLayout
    android:id="@+id/bottomBar"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:layout_alignParentBottom="true">


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Button"
        android:id="@+id/previousButton"
        android:layout_alignBottom="@+id/bottomBar"
        android:layout_alignParentLeft="true"


        />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Button"
        android:id="@+id/nextButton"
        android:layout_alignBottom="@+id/bottomBar"
        android:layout_alignParentRight="true"

        />
</RelativeLayout>

答案 2 :(得分:0)

如果您只需要使每个按钮具有相同的宽度并占据父布局的总宽度:

在按钮中,更改为android:layout_width="0dp" 并添加android:layout_weight="1"

这将分配所有宽度均匀的按钮。