如何在嵌套的ViewGroup中将ImageView排列不均匀改为均匀?

How to change ImageView arranged uneven to even in nested ViewGroup?

我正在 Android 中处理嵌套的 ViewGroup,我只使用了 LinearLayout 和 RelativeLayout,我需要设计一个 Activity 如下图所示

因此我使用嵌套的 ViewGroup

创建了如下所示的 xml 代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.akashpreet.cards.MainActivity">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:orientation="horizontal">

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <ImageView
            android:id="@+id/one1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:scaleType="center"
            android:src="@drawable/a" />

        <TextView
            android:id="@+id/one2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@id/one3"
            android:text="OneName" />

        <TextView
            android:id="@+id/one3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:text="OneNameDes" />

    </RelativeLayout>

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <ImageView
            android:id="@+id/two1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:scaleType="center"
            android:src="@drawable/b" />

        <TextView
            android:id="@+id/two2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/two3"
            android:layout_alignParentLeft="true"
            android:text="TwoName" />

        <TextView
            android:id="@+id/two3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:text="TwoNameDes" />

    </RelativeLayout>

</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:orientation="horizontal">

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <ImageView
            android:id="@+id/three1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:scaleType="centerCrop"
            android:src="@drawable/c" />

        <TextView
            android:id="@+id/three2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@id/three3"
            android:text="ThreeName" />

        <TextView
            android:id="@+id/three3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:text="ThreeNameDes" />

    </RelativeLayout>

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <ImageView
            android:id="@+id/four1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:scaleType="centerCrop"
            android:src="@drawable/d" />

        <TextView
            android:id="@+id/four2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@id/four3"
            android:text="FourName" />

        <TextView
            android:id="@+id/four3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:text="FourNameDes" />

    </RelativeLayout>


</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:orientation="horizontal">

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <ImageView
            android:id="@+id/five1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:scaleType="centerCrop"
            android:src="@drawable/e" />

        <TextView
            android:id="@+id/five2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@id/five3"
            android:text="FiveName" />

        <TextView
            android:id="@+id/five3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:text="FiveeNameDes" />

    </RelativeLayout>

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <ImageView
            android:id="@+id/six1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:scaleType="centerCrop"
            android:src="@drawable/f" />

        <TextView
            android:id="@+id/six2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@id/six3"
            android:text="SixName" />

        <TextView
            android:id="@+id/six3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:text="SixNameDes" />

    </RelativeLayout>


</LinearLayout>

</LinearLayout>

但是我的输出结果和预期的不一样,就像下图一样,排列不均匀

请有人帮我修正我的代码,使 ImageView 在我的 Activity 中均匀排列,我使用 a、b、c、d、e、f 作为 6 个图像文件的名称我在代码中使用过,我使用了一些示例图片,但并不完全相同。

您好,您使用的是视图组,但您还有另一个选项使用 gridview。 您使用了 weight=1 和水平方向的 linearlayout 现在您只将 weight = .5 添加到图像的相对布局。

    <LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal">

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_weight=".5"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/one1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleType="center"
        android:src="@drawable/a" />

    <TextView
        android:id="@+id/one2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@id/one3"
        android:text="OneName" />

    <TextView
        android:id="@+id/one3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:text="OneNameDes" />

</RelativeLayout>

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_weight=".5"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/two1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleType="center"
        android:src="@drawable/b" />

    <TextView
        android:id="@+id/two2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/two3"
        android:layout_alignParentLeft="true"
        android:text="TwoName" />

    <TextView
        android:id="@+id/two3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:text="TwoNameDes" />

</RelativeLayout>

更改嵌套相对布局的权重。

这是因为图像高度/宽度不固定。

更改图像的父级相对布局如下:

<RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/one1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleType="center"
        android:src="@drawable/a" />

<RelativeLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1" >


    <ImageView
        android:scaleType="fitXY"
        android:id="@+id/one1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/a" />

我找到了问题的答案。

如果我在 XML

中更改此代码
<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

        <ImageView
            android:id="@+id/one1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:scaleType="center"
            android:src="@drawable/a" />

<RelativeLayout
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1">

        <ImageView
             android:id="@+id/one1"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:scaleType="centerCrop"
             android:src="@drawable/a" />

在我所有的 RelativeLayout 如果我添加 android:layout_weight = "1"android:layout_width = "0dp"

我按预期在 Activity 中得到了输出。