2

首先,这不是一个重复的问题,尽我所能,我已经尝试了所有(有很多)类似的问题。此类问题的解决方案似乎非常主观,特定于给定场景。

我的布局目前如下所示。黑框是图像(分别是logobody),颜色代表每个布局:

布局截图

我的 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而不是线性
  • 切换LinearLayoutgravitylayout_gravityImageView,以及排除每个的组合
  • 我想要的是对宽度和高度相当有信心match_parent,但我尝试了不同的组合wrap_content

我明白了什么:

  • gravity:top需要父视图使用orientation:horizontal
  • gravity:left需要父视图使用orientation:vertical
  • gravity适用于视图的孩子
  • linear_gravity应用孩子如何与其父母保持一致
  • gravity在父级和子级上使用相同的值linear_gravity可能具有相同的效果(当使用一个而不是另一个时)?

希望这是足够的信息。我很难理解这些布局是如何工作的。

十分感谢你的帮助!

4

1 回答 1

2

我认为您的问题是您将图像视图的尺寸设置为match_parent. 我会使用 RelativeLayout,因为它在您的情况下似乎是最有效的(伪 XML 代码):

RelativeLayout (width=match_parent, height=match_parent)
  ImageView (width=wrap_content, height=wrap_content, 
             alignParentTop=true, centerHorizontal=true)
  ImageView (width=wrap_content, height=wrap_content, 
             alignParentBottom=true, alignParentLeft=true)

您在这里不需要任何重力设置。您可能希望根据图像大小使用 scaleType 属性。

于 2012-11-08T22:51:51.690 回答