Android studio activity XML 无法使布局权重正确对齐
Android studio activity XML can't get the layout weights to align properly
我真的很难理解如何让线性布局在我的 xml activity.
中呈现正确的比例
下面是我的代码。基本上有 3 层(标记为第一层、第二层和第三层)。我希望它们垂直对齐,以便第 1 层占据屏幕顶部的 10%,随后第 2 层占据屏幕的下一个 10%,然后第 3 层占据屏幕剩余的 80%。
使用下面的代码,顶部 2 层中的小部件被压缩,因此我看不到完整的小部件。我确定这与我使用布局权重的方式有关,但我不确定如何解决它。
<?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="fill_parent"
android:id="@+id/layTopLevel"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@color/colorPrimaryDark"
android:weightSum="10"
android:orientation="vertical">
<!--layer one-->
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/layerOne"
android:gravity="center_vertical"
android:layout_weight="1">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/customborder"
android:orientation="horizontal" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_weight="0.5"
>
<LinearLayout
android:id="@+id/layoutName"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="@drawable/customborder"
android:orientation="vertical">
<TextView
android:id="@+id/txtMyPlaceName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/myPlaceName" />
<EditText
android:id="@+id/etMyPlaceName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Enter name here"
android:singleLine="true" />
</LinearLayout>
</RelativeLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_weight="0.5"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/layoutType"
android:layout_weight="1"
android:background="@drawable/customborder"
android:orientation="vertical" >
<TextView
android:id="@+id/txtMyPlaceType"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:text="@string/myPlaceType" />
<Spinner
android:id="@+id/spnType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style = "@style/Widget.AppCompat.Spinner.Underlined"
/>
</LinearLayout>
</RelativeLayout>
</LinearLayout>
</RelativeLayout>
<!--Layer Two-->
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/layerTwo"
android:gravity="center_vertical"
android:layout_weight="1">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="2"
android:background="@drawable/customborder"
android:orientation="horizontal" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_weight="0.333">
<Button
android:id="@+id/btnAdd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left|center_vertical"
android:onClick="addSightingToDb"
android:text="@string/addSighting" />
</RelativeLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_weight="0.333">
<Button
android:id="@+id/btnClearLast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left|center_vertical"
android:onClick="addSightingToDb"
android:text="@string/addSighting" />
</RelativeLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_weight="0.334">
<Button
android:id="@+id/btnClearAll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left|center_vertical"
android:onClick="addSightingToDb"
android:text="@string/addSighting" />
</RelativeLayout>
</LinearLayout>
</RelativeLayout>
<!--Layer three-->
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/layerThree"
android:gravity="center_vertical"
android:layout_weight="8">
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</RelativeLayout>
</LinearLayout>
<!--<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="fill_parent"-->
<!--xmlns:app="http://schemas.android.com/apk/res-auto"-->
<!--android:layout_marginTop="10dp"-->
<!--android:background="@color/colorPrimaryDark"-->
<!--android:orientation="horizontal">-->
<!--<LinearLayout-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="fill_parent"-->
<!--android:orientation="vertical">-->
<!--<LinearLayout-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="fill_parent"-->
<!--android:layout_weight="1"-->
<!--android:background="@drawable/customborder"-->
<!--android:orientation="vertical" >-->
<!--<!–first row–>-->
<!--<LinearLayout-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_weight="0.5"-->
<!--android:background="@drawable/customborder"-->
<!--android:layout_marginBottom="5dp"-->
<!--android:orientation="horizontal" >-->
<!--<RelativeLayout-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="wrap_content"-->
<!--android:gravity="center_vertical"-->
<!--android:layout_weight="0.50">-->
<!--<LinearLayout-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_weight="1"-->
<!--android:background="@drawable/customborder"-->
<!--android:orientation="vertical" >-->
<!--<TextView-->
<!--android:id="@+id/txtMyPlaceName"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:text="@string/myPlaceName" />-->
<!--<EditText-->
<!--android:id="@+id/etMyPlaceName"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:singleLine="true" />-->
<!--</LinearLayout>-->
<!--</RelativeLayout>-->
<!--<RelativeLayout-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="wrap_content"-->
<!--android:gravity="center_vertical"-->
<!--android:layout_weight="0.50">-->
<!--<LinearLayout-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_weight="1"-->
<!--android:background="@drawable/customborder"-->
<!--android:orientation="vertical" >-->
<!--<TextView-->
<!--android:id="@+id/txtMyPlaceType"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:text="@string/myPlaceType" />-->
<!--<Spinner-->
<!--android:id="@+id/spnSeenHeard"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--style = "@style/Widget.AppCompat.Spinner.Underlined"-->
<!--/>-->
<!--</LinearLayout>-->
<!--</RelativeLayout>-->
<!--</LinearLayout>-->
<!--<!–button row–>-->
<!--<LinearLayout-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_weight="0.50"-->
<!--android:background="@drawable/customborder"-->
<!--android:layout_marginBottom="10dp"-->
<!--android:orientation="horizontal" >-->
<!--<RelativeLayout-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="match_parent"-->
<!--android:gravity="center_vertical"-->
<!--android:layout_weight="0.34">-->
<!--<Button-->
<!--android:id="@+id/btnAdd"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:gravity="left|center_vertical"-->
<!--android:onClick="addSightingToDb"-->
<!--android:text="@string/addSighting" />-->
<!--</RelativeLayout>-->
<!--<RelativeLayout-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="match_parent"-->
<!--android:gravity="center_vertical"-->
<!--android:layout_weight="0.33">-->
<!--<Button-->
<!--android:id="@+id/btnClearLast"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:gravity="left|center_vertical"-->
<!--android:onClick="addSightingToDb"-->
<!--android:text="@string/addSighting" />-->
<!--</RelativeLayout>-->
<!--<RelativeLayout-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="match_parent"-->
<!--android:gravity="center_vertical"-->
<!--android:layout_weight="0.33">-->
<!--<Button-->
<!--android:id="@+id/btnClearAll"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:gravity="left|center_vertical"-->
<!--android:onClick="addSightingToDb"-->
<!--android:text="@string/addSighting" />-->
<!--</RelativeLayout>-->
<!--</LinearLayout>-->
<!--<!–Map row–>-->
<!--<LinearLayout-->
<!--android:id="@+id/layout_map"-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_weight="0.50"-->
<!--android:background="@drawable/customborder"-->
<!--android:layout_marginBottom="5dp"-->
<!--android:orientation="horizontal" >-->
<!--<RelativeLayout-->
<!--android:id="@+id/map_layout"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="match_parent">-->
<!--<fragment-->
<!--android:id="@+id/map"-->
<!--android:name="com.google.android.gms.maps.SupportMapFragment"-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="match_parent"-->
<!--android:layout_alignParentStart="true"-->
<!--android:layout_alignParentTop="true" />-->
<!--</RelativeLayout>-->
<!--</LinearLayout>-->
<!--</LinearLayout>-->
<!--</LinearLayout>-->
<!--</LinearLayout>-->
当您在视图上使用权重时,您就是在限制视图的高度。
如果视图所需的高度超过 android:layout_weight 属性分配给它的高度,其子视图将被压缩以符合 layout_weight 属性。
删除所有图层的 layout_weight 属性。
将第一层高度设置为wrap_content
将第二层高度设置为wrap_content
将第三层高度设置为match_parent。
我真的很难理解如何让线性布局在我的 xml activity.
中呈现正确的比例下面是我的代码。基本上有 3 层(标记为第一层、第二层和第三层)。我希望它们垂直对齐,以便第 1 层占据屏幕顶部的 10%,随后第 2 层占据屏幕的下一个 10%,然后第 3 层占据屏幕剩余的 80%。
使用下面的代码,顶部 2 层中的小部件被压缩,因此我看不到完整的小部件。我确定这与我使用布局权重的方式有关,但我不确定如何解决它。
<?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="fill_parent"
android:id="@+id/layTopLevel"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@color/colorPrimaryDark"
android:weightSum="10"
android:orientation="vertical">
<!--layer one-->
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/layerOne"
android:gravity="center_vertical"
android:layout_weight="1">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/customborder"
android:orientation="horizontal" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_weight="0.5"
>
<LinearLayout
android:id="@+id/layoutName"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="@drawable/customborder"
android:orientation="vertical">
<TextView
android:id="@+id/txtMyPlaceName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/myPlaceName" />
<EditText
android:id="@+id/etMyPlaceName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Enter name here"
android:singleLine="true" />
</LinearLayout>
</RelativeLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_weight="0.5"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/layoutType"
android:layout_weight="1"
android:background="@drawable/customborder"
android:orientation="vertical" >
<TextView
android:id="@+id/txtMyPlaceType"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:text="@string/myPlaceType" />
<Spinner
android:id="@+id/spnType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style = "@style/Widget.AppCompat.Spinner.Underlined"
/>
</LinearLayout>
</RelativeLayout>
</LinearLayout>
</RelativeLayout>
<!--Layer Two-->
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/layerTwo"
android:gravity="center_vertical"
android:layout_weight="1">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="2"
android:background="@drawable/customborder"
android:orientation="horizontal" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_weight="0.333">
<Button
android:id="@+id/btnAdd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left|center_vertical"
android:onClick="addSightingToDb"
android:text="@string/addSighting" />
</RelativeLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_weight="0.333">
<Button
android:id="@+id/btnClearLast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left|center_vertical"
android:onClick="addSightingToDb"
android:text="@string/addSighting" />
</RelativeLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_weight="0.334">
<Button
android:id="@+id/btnClearAll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left|center_vertical"
android:onClick="addSightingToDb"
android:text="@string/addSighting" />
</RelativeLayout>
</LinearLayout>
</RelativeLayout>
<!--Layer three-->
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/layerThree"
android:gravity="center_vertical"
android:layout_weight="8">
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</RelativeLayout>
</LinearLayout>
<!--<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="fill_parent"-->
<!--xmlns:app="http://schemas.android.com/apk/res-auto"-->
<!--android:layout_marginTop="10dp"-->
<!--android:background="@color/colorPrimaryDark"-->
<!--android:orientation="horizontal">-->
<!--<LinearLayout-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="fill_parent"-->
<!--android:orientation="vertical">-->
<!--<LinearLayout-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="fill_parent"-->
<!--android:layout_weight="1"-->
<!--android:background="@drawable/customborder"-->
<!--android:orientation="vertical" >-->
<!--<!–first row–>-->
<!--<LinearLayout-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_weight="0.5"-->
<!--android:background="@drawable/customborder"-->
<!--android:layout_marginBottom="5dp"-->
<!--android:orientation="horizontal" >-->
<!--<RelativeLayout-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="wrap_content"-->
<!--android:gravity="center_vertical"-->
<!--android:layout_weight="0.50">-->
<!--<LinearLayout-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_weight="1"-->
<!--android:background="@drawable/customborder"-->
<!--android:orientation="vertical" >-->
<!--<TextView-->
<!--android:id="@+id/txtMyPlaceName"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:text="@string/myPlaceName" />-->
<!--<EditText-->
<!--android:id="@+id/etMyPlaceName"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:singleLine="true" />-->
<!--</LinearLayout>-->
<!--</RelativeLayout>-->
<!--<RelativeLayout-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="wrap_content"-->
<!--android:gravity="center_vertical"-->
<!--android:layout_weight="0.50">-->
<!--<LinearLayout-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_weight="1"-->
<!--android:background="@drawable/customborder"-->
<!--android:orientation="vertical" >-->
<!--<TextView-->
<!--android:id="@+id/txtMyPlaceType"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:text="@string/myPlaceType" />-->
<!--<Spinner-->
<!--android:id="@+id/spnSeenHeard"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--style = "@style/Widget.AppCompat.Spinner.Underlined"-->
<!--/>-->
<!--</LinearLayout>-->
<!--</RelativeLayout>-->
<!--</LinearLayout>-->
<!--<!–button row–>-->
<!--<LinearLayout-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_weight="0.50"-->
<!--android:background="@drawable/customborder"-->
<!--android:layout_marginBottom="10dp"-->
<!--android:orientation="horizontal" >-->
<!--<RelativeLayout-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="match_parent"-->
<!--android:gravity="center_vertical"-->
<!--android:layout_weight="0.34">-->
<!--<Button-->
<!--android:id="@+id/btnAdd"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:gravity="left|center_vertical"-->
<!--android:onClick="addSightingToDb"-->
<!--android:text="@string/addSighting" />-->
<!--</RelativeLayout>-->
<!--<RelativeLayout-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="match_parent"-->
<!--android:gravity="center_vertical"-->
<!--android:layout_weight="0.33">-->
<!--<Button-->
<!--android:id="@+id/btnClearLast"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:gravity="left|center_vertical"-->
<!--android:onClick="addSightingToDb"-->
<!--android:text="@string/addSighting" />-->
<!--</RelativeLayout>-->
<!--<RelativeLayout-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="match_parent"-->
<!--android:gravity="center_vertical"-->
<!--android:layout_weight="0.33">-->
<!--<Button-->
<!--android:id="@+id/btnClearAll"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:gravity="left|center_vertical"-->
<!--android:onClick="addSightingToDb"-->
<!--android:text="@string/addSighting" />-->
<!--</RelativeLayout>-->
<!--</LinearLayout>-->
<!--<!–Map row–>-->
<!--<LinearLayout-->
<!--android:id="@+id/layout_map"-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_weight="0.50"-->
<!--android:background="@drawable/customborder"-->
<!--android:layout_marginBottom="5dp"-->
<!--android:orientation="horizontal" >-->
<!--<RelativeLayout-->
<!--android:id="@+id/map_layout"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="match_parent">-->
<!--<fragment-->
<!--android:id="@+id/map"-->
<!--android:name="com.google.android.gms.maps.SupportMapFragment"-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="match_parent"-->
<!--android:layout_alignParentStart="true"-->
<!--android:layout_alignParentTop="true" />-->
<!--</RelativeLayout>-->
<!--</LinearLayout>-->
<!--</LinearLayout>-->
<!--</LinearLayout>-->
<!--</LinearLayout>-->
当您在视图上使用权重时,您就是在限制视图的高度。
如果视图所需的高度超过 android:layout_weight 属性分配给它的高度,其子视图将被压缩以符合 layout_weight 属性。
删除所有图层的 layout_weight 属性。
将第一层高度设置为wrap_content
将第二层高度设置为wrap_content
将第三层高度设置为match_parent。