首先,这不是一个重复的问题,尽我所能,我已经尝试了所有(有很多)类似的问题。此类问题的解决方案似乎非常主观,特定于给定场景。
我的布局目前如下所示。黑框是图像(分别是logo和body),颜色代表每个布局:
我的 XML:
<?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:background="#000"
android:padding="0px"
android:layout_margin="0px"
android:orientation="vertical">
<LinearLayout
android:layout_weight="16"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFF"
android:gravity="top|center"
android:orientation="horizontal">
<ImageView
android:id="@+id/logo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/logo"
android:layout_gravity="top|center" />
</LinearLayout>
<LinearLayout
android:layout_weight="4"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00F"
android:gravity="bottom|left"
android:orientation="vertical">
<ImageView
android:id="@+id/body"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/body"
android:layout_gravity="bottom|left" />
</LinearLayout>
</LinearLayout>
在这里你可以看到我有一个父线性布局,分成两个子线性布局。这是因为我需要在页面的该部分中以不同的方式定位图像。
简而言之,我需要徽标与顶部垂直对齐,而主体与左下角水平对齐。
现在,我尝试了一些事情:
- 使用
RelativeLayout
而不是线性 - 切换LinearLayout
gravity
和layout_gravity
ImageView,以及排除每个的组合 - 我想要的是对宽度和高度相当有信心
match_parent
,但我尝试了不同的组合wrap_content
我明白了什么:
gravity:top
需要父视图使用orientation:horizontal
gravity:left
需要父视图使用orientation:vertical
gravity
适用于视图的孩子linear_gravity
应用孩子如何与其父母保持一致gravity
在父级和子级上使用相同的值linear_gravity
可能具有相同的效果(当使用一个而不是另一个时)?
希望这是足够的信息。我很难理解这些布局是如何工作的。
十分感谢你的帮助!