[英]Keep LinearLayout at the bottom of screen
我知道这个问题被问了很多,因为我在这里尝试了很多例子,但我就是不能让它工作,这就是我所拥有的:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cardview="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:background="#3F51B5"
android:padding="5dp"
android:paddingBottom="500dp">
<LinearLayout
android:orientation="vertical"
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="0dp"
android:id="@+id/linearLayout2"
android:gravity="bottom"
android:layout_weight="1">
<Button
android:text="Button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnTarjeta"
android:background="@color/my_purple"
android:layout_marginBottom="20dp"
android:layout_marginTop="20dp" />
<TextView
android:text="Text"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/my_white"
android:id="@+id/textView1"
android:fontFamily="sans-serif-medium"
android:layout_marginBottom="10dp" />
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/radioGp"
android:minWidth="25px"
android:minHeight="25px"
android:layout_marginBottom="10dp" />
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linearLayout3"
android:layout_gravity="bottom">
<Button
android:text="Button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button2" />
<Button
android:text="Button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button1" />
</LinearLayout>
</LinearLayout>
可能是“问题”的一件事是我正在动态填充单选组内的单选按钮,所以有时可以是 4 个单选按钮,而在其他时刻可以是 1 个,我不知道这是否会影响我正在尝试做的任何事情。
我要做的是将第一个线性层保留在顶部,将第二个线性层保留在按钮处。 我做错了什么?
下次请更好地描述您的确切需求。 我不确定,但也许你想要这个。 将根LinearLayout
height
更改为match_parent
,并删除第一个LinearLayout
android:gravity="bottom"
首先要做的是,您必须将主容器的高度设置为match_parent
,然后将视图扩展为设备屏幕的高度,接下来我无法理解为什么您的第一个孩子的逻辑 - LinearLayout 的 0dp 为android:layout_height
但你应该把它放到android:layout_height="wrap_content"
最后要做的是把android:layout_gravity="bottom"
放到第二个子 LinearLayout。
我还建议阅读 android:layout_gravity="" 和 android:gravity="" 的区别,它们都是 LinearLayout 属性。
更新:
从主容器中删除 android:gravity="center_horizontal" 它使孩子 go 到中心。
从第一个孩子中删除 android:gravity="bottom" android:layout_weight="1" 为什么要将第一个线性布局转移到底部的 go?
这是一些干净的代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cardview="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#3F51B5"
android:padding="20dp">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linearLayout2">
<Button
android:text="Button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnTarjeta"
android:background="@color/my_purple"
android:layout_marginBottom="20dp"
android:layout_marginTop="20dp" />
<TextView
android:text="Text"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/my_white"
android:id="@+id/textView1"
android:fontFamily="sans-serif-medium"
android:layout_marginBottom="10dp" />
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/radioGp"
android:minWidth="25px"
android:minHeight="25px"
android:layout_marginBottom="10dp" />
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linearLayout3"
android:layout_gravity="bottom">
<Button
android:text="Button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button2" />
<Button
android:text="Button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button1" />
</LinearLayout>
</LinearLayout>
因为LinearLayout
gravity
并不总是按预期工作,我建议您使两个内部LinearLayout
都具有android:layout_height="wrap_content"
并插入一个空View
,它将垂直拉伸并填充顶部和底部内容之间的所有可用空间。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cardview="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_content"
... >
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linearLayout2">
<Button ... />
<TextView ... />
<RadioGroup .../>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linearLayout3">
<Button ... />
<Button ... />
</LinearLayout>
</LinearLayout>
你可以使用 layout_weight。 80 和 20,它适用于所有屏幕
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cardview="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:background="#3F51B5"
android:gravity="center_horizontal"
android:orientation="vertical"
android:padding="5dp"
android:paddingBottom="500dp"
android:weightSum="100">
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="80"
android:gravity="bottom"
android:minHeight="25px"
android:minWidth="25px"
android:orientation="vertical">
<Button
android:id="@+id/btnTarjeta"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:layout_marginTop="20dp"
android:background="@color/my_purple"
android:text="Button" />
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:fontFamily="sans-serif-medium"
android:text="Text"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/my_white" />
<RadioGroup
android:id="@+id/radioGp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:minHeight="25px"
android:minWidth="25px" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout3"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_gravity="bottom"
android:layout_weight="20"
android:orientation="vertical">
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button" />
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button" />
</LinearLayout>
</LinearLayout>
您可以混合使用容器(布局)。
如果你想把控件排成一行但又想把它固定在底部,你可以像这样混合使用linear layout
和relative like
布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".WebActivity" >
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="0dp"
android:background="@color/white"
android:orientation="horizontal">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="backWeb"
android:text="Back />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Home" />
<Button
android:onClick="forwardWeb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Forward" />
</LinearLayout>
</RelativeLayout>
最后结果:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.