我是一名新的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>
但是这个命令没有响应。我该如何解决这个问题?
答案 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>
这就是它的样子:
答案 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)
这是一个简单的解决方案,它将对您当前的布局采取最少的操作:
android:layout_height="match_parent"
设置为根LinearLayout
。LinearLayout
内的所有项目占用一些空间,请确保包含按钮的最后一项LinearLayout
伸展以占用所有剩余空间。将android:layout_weight="1"
设置为内部LinearLayout
。LinearLayout
已拉伸到屏幕底部,您只需将android:gravity="bottom"
设置为它就可以将按钮移到底部。我认为您的布局适合您,但也考虑使用其他建议的RelativeLayout
。这可能会改善您在不同屏幕上的布局行为,但是,您必须重新设计整个布局,这与您原始问题的主题不同。