如何在嵌套的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 中得到了输出。
我正在 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 中得到了输出。