android:layout_gravity =“bottom”没有响应

时间:2015-05-06 15:11:46

标签: android xml android-layout layout

我是一名新的Android开发人员,我对线性布局中的layout_gravity有疑问。我想设置屏幕底部的最后两个按钮。我试过这样的:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <EditText
        android:id="@+id/question"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:inputType="text"
        android:text="@string/question" />

    <EditText
        android:id="@+id/questione"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:inputType="text"
        android:text="@string/questione" />

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

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/carne" />

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/pesce" />

    </LinearLayout>

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

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/hotdog" />

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/pizza" />

    </LinearLayout>

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

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/dolce" />

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/vino" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:orientation="horizontal">

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/logout" />

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/avanti" />
    </LinearLayout>
</LinearLayout>

但是这个命令没有响应。我该如何解决这个问题?

4 个答案:

答案 0 :(得分:0)

您应该使用RelativeLayout来实现目标。

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_alignParentTop="true"
        ...>

        <!-- ... -->

    </LinearLayout>

    <LinearLayout
        android:layout_alignParentBottom="true"
        ...>

        <!-- ... -->

    </LinearLayout>

</RelativeLayout>

第二个LinearLayout将固定在屏幕底部。

答案 1 :(得分:0)

尝试下面的XML代码:
1.由于@Rajat Mehra在评论中询问您,您需要将Parent Linearlayout Height设为“match_parent”。
2. LinearLayout水平或垂直填充视图。因此,要将LinearLayout置于底部,您可以设置其他LinearLayout或Put虚拟视图的权重以填充空间。在下面的代码中,我使用了View组件来填充两个LinearLayout之间的空白区域。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <EditText
        android:id="@+id/question"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:inputType="text"
        android:text="@string/question" />

    <EditText
        android:id="@+id/questione"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:inputType="text"
        android:text="@string/questione" />

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

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/carne" />

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/pesce" />

    </LinearLayout>

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

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/hotdog" />

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/pizza" />

    </LinearLayout>

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

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/dolce" />

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/vino" />

    </LinearLayout>
    <View
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/logout" />

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/avanti" />
    </LinearLayout>
</LinearLayout>

这就是它的样子:
enter image description here

答案 2 :(得分:0)

你需要RelativeLayout,试试这个布局

#dummy data
m <- matrix(c(runif(3),NA,runif(2),NA,runif(2),NA,runif(3)),ncol=1)
m
#            [,1]
# [1,] 0.66061405
# [2,] 0.52066742
# [3,] 0.65503125
# [4,]         NA
# [5,] 0.80940612
# [6,] 0.04561362
# [7,]         NA
# [8,] 0.56771139
# [9,] 0.12002132
# [10,]         NA
# [11,] 0.32809536
# [12,] 0.45677662
# [13,] 0.97538827
#index of intervals
ix <- c(0,which(is.na(m[,1])),nrow(m))

#assign blocks
m <- cbind(m,rep(1:length(diff(ix)),diff(ix)))

#exclude blank rows
m[ !is.na(m[,1]), ]
#            [,1] [,2]
# [1,] 0.54458424    1
# [2,] 0.99712258    1
# [3,] 0.21064432    1
# [4,] 0.38194407    2
# [5,] 0.78414814    2
# [6,] 0.95007031    3
# [7,] 0.09169785    3
# [8,] 0.03803962    4
# [9,] 0.78180826    4
# [10,] 0.40222317    4

答案 3 :(得分:0)

这是一个简单的解决方案,它将对您当前的布局采取最少的操作:

  1. 您的布局必须占据整个屏幕才能将这些按钮放在底部。将android:layout_height="match_parent"设置为根LinearLayout
  2. LinearLayout内的所有项目占用一些空间,请确保包含按钮的最后一项LinearLayout伸展以占用所有剩余空间。将android:layout_weight="1"设置为内部LinearLayout
  3. 既然内部LinearLayout已拉伸到屏幕底部,您只需将android:gravity="bottom"设置为它就可以将按钮移到底部。
  4. 我认为您的布局适合您,但也考虑使用其他建议的RelativeLayout。这可能会改善您在不同屏幕上的布局行为,但是,您必须重新设计整个布局,这与您原始问题的主题不同。