对齐左/中/右线性布局 - Android
Posted
技术标签:
【中文标题】对齐左/中/右线性布局 - Android【英文标题】:Aligning Left/Center/Right LinearLayout - Android 【发布时间】:2014-10-24 14:48:26 【问题描述】:这应该很容易,但由于我是 android 开发的新手,所以我要问。我基本上想用简单的按钮(上一个/主页/下一个)在我的活动底部创建一个静态菜单栏。但是,由于 android:layout_alignParentRight="true" 似乎无法完成工作,因此我在对齐这些方面有问题。我也试过重力,但都不管用。我当前的代码:
<LinearLayout
android:id="@+id/bottomBar"
android:layout_
android:layout_
android:layout_alignParentBottom="true"
android:orientation="horizontal"
android:gravity="center_vertical">
<Button
android:layout_
android:layout_
android:text="New Button"
android:id="@+id/previousButton"
android:layout_alignBottom="@+id/bottomBar"
/>
<Button
android:layout_
android:layout_
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_
android:layout_
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_
android:layout_>
<LinearLayout android:layout_
android:layout_
android:orientation="vertical">
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/quizTableLayout"
android:layout_
android:layout_ >
</TableLayout>
<TableLayout
android:layout_
android:layout_
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_
android:layout_
android:id="@+id/bottomBar">
<LinearLayout
android:layout_
android:layout_
android:layout_alignParentBottom="true"
android:layout_centerVertical="true"
android:orientation="horizontal" >
<Button
android:id="@+id/previousButton"
android:layout_
android:layout_
android:text="New Button" />
<Button
android:layout_
android:layout_
android:text="New Button"
android:id="@+id/nextButton"
android:layout_toRightOf="@id/previousButton"/>
</LinearLayout>
</RelativeLayout>
【问题讨论】:
【参考方案1】:您必须使用RelativeLayout。
试试这样的:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_ >
<Button
android:id="@+id/previousButton"
android:layout_
android:layout_
android:layout_alignParentBottom="true"
android:text="New Button" />
<Button
android:layout_
android:layout_
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_
android:layout_
android:id="@+id/bottomBar">
/>
<LinearLayout
android:layout_
android:layout_
android:layout_alignParentBottom="true"
android:layout_centerVertical="true"
android:orientation="horizontal" >
<Button
android:id="@+id/previousButton"
android:layout_
android:layout_
android:text="New Button" />
<Button
android:layout_
android:layout_
android:text="New Button"
android:id="@+id/nextButton"
android:layout_toRightOf="@id/previousButton"/>
</LinearLayout>
</RelativeLayout>
编辑 2
好的,如果我理解正确的话: 您想要一个由 Scroll View 和屏幕底部的 View 组成的布局,其中有两个按钮,一个与屏幕左侧对齐,另一个与右侧对齐。 我认为以下布局建议可以为您解决。然而,如果没有看到您当前的布局,我无法清楚地了解您希望您的布局如何。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/bottomBar"
android:layout_
android:layout_
android:orientation="vertical">
/>
<ScrollView
android:id="@+id/scrollView1"
android:layout_
android:layout_
android:layout_weight="1" >
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical" >
</LinearLayout>
</ScrollView>
<RelativeLayout
android:layout_
android:layout_
android:orientation="horizontal" >
<Button
android:id="@+id/previousButton"
android:layout_
android:layout_
android:layout_gravity="left"
android:text="New Button"
android:layout_alignParentLeft="true"/>
<Button
android:id="@+id/nextButton"
android:layout_
android:layout_
android:text="New Button"
android:layout_alignParentRight="true"/>
</RelativeLayout>
</LinearLayout>
编辑 3
为了有第三个按钮,只需在最后一个按钮视图之后添加下面的 XML:
<Button
android:id="@+id/center"
android:layout_
android:layout_
android:text="Center"
android:layout_toRightOf="@id/previousButton"
android:layout_toLeftOf="@id/nextButton"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"/>
我添加了marginLeft
和marginRight
,以便按钮之间有一定距离,因为我认为这就是您想要的。
【讨论】:
这不会起作用,因为布局不在我想要的包装我的内容的设备底部 我不确定我是否理解......你想要底部的RelativeLayout吗?你会在它上面放置什么布局?我不确定这是否可能,在一个活动中有两个布局...... 我的布局上方有一个 ScrollView。这一定是可能的,因为许多应用程序都有这种布局。这是一个程序的链接:youtube.com/watch?v=EI4MP0DpFeE。检查分钟:2:09 底部菜单栏。这就是我想要的 这也行不通,因为 RelativeLayout 不在底部。加上按钮无法对齐,因为我希望它们对齐 您能提供您的布局xml吗?我假设 RelativeLayout 是根布局,而 LinearLayout 是底部的那个【参考方案2】:您不能在 LinearLayout 中使用 xml 属性 alignParentBottom。它适用于相对布局。
其次,重力属性只是定位标签的内容(它会将按钮放在页面垂直的中心)
试试这个
<RelativeLayout
android:id="@+id/bottomBar"
android:layout_
android:layout_
android:layout_alignParentBottom="true">
<Button
android:layout_
android:layout_
android:text="New Button"
android:id="@+id/previousButton"
android:layout_alignBottom="@+id/bottomBar"
android:layout_alignParentLeft="true"
/>
<Button
android:layout_
android:layout_
android:text="New Button"
android:id="@+id/nextButton"
android:layout_alignBottom="@+id/bottomBar"
android:layout_alignParentRight="true"
/>
</RelativeLayout>
【讨论】:
你的代码抛出异常:“@+id/bottombar 不是同一个RelativeLayout中的兄弟”【参考方案3】:如果只需要让每个按钮的宽度一样,占据父布局的总宽度:
在按钮中,更改为android:layout_width="0dp"
并添加android:layout_weight="1"
这将使所有按钮的宽度均匀分布。
【讨论】:
以上是关于对齐左/中/右线性布局 - Android的主要内容,如果未能解决你的问题,请参考以下文章