我的ImageViews之间不需要的水平间距

时间:2015-04-10 18:54:26

标签: android android-layout android-linearlayout

我正在尝试以2x2网格方式放置四个ImageView,我尝试了从tableLayout到relativeLayout的所有知识,最后是一个嵌套的Layout,如下所示

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:id="@+id/top">

<ImageView
    android:layout_width="150dp"
    android:layout_height="150dp"
    android:id="@+id/imageView"
    />



<ImageView
    android:layout_width="150dp"
    android:layout_height="150dp"
    android:id="@+id/imageView2"
    />
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_below="@id/top"
    android:id="@+id/btm">

<ImageView
    android:layout_width="150dp"
    android:layout_height="150dp"
    android:id="@+id/imageView3"

    />

<ImageView
    android:layout_width="150dp"
    android:layout_height="150dp"
    android:id="@+id/imageView4"
    android:layout_below="@id/imageView2"
    /></LinearLayout>

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/changepic"
    android:id="@+id/button"

    android:layout_below="@id/btm"/>

但无论我做什么,我总是在同一行中的ImageViews之间得到这个“不需要的”水平间距,这在图像视图之间出乎意料地不存在。 Picture Here 造成这种情况的原因是什么?

2 个答案:

答案 0 :(得分:0)

我完全摆脱了线性布局 - 你不需要它,添加额外的视图在Android上有糟糕的性能问题。而是制作第二个图像android:layout_toRightOf左边的那个。那也应该杀死这个空间。

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >


<ImageView
    android:layout_width="wrap_content"
    android:layout_height="150dp"
    android:id="@+id/imageView"
    />



<ImageView
    android:layout_width="wrap_content"
    android:layout_height="150dp"
    android:layout_toRightOf="@id/imageView"
    android:id="@+id/imageView2"
    />
...

另外 - 你确定你的宽度是正确的吗?你有一对150dpx150dp的图像。那些图像不是正方形的。你可能不是那么宽,所以额外的空间是因为图像只填充了150dp的一部分。你可能想要宽度为wrap_content。

答案 1 :(得分:0)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:context=".MainActivity" >

<LinearLayout
    android:id="@+id/top"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:layout_gravity="left"
        android:src="@drawable/ic_launcher" />

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:layout_gravity="right"
        android:src="@drawable/ic_launcher" />

</LinearLayout>

<LinearLayout
    android:id="@+id/btm"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/imageView3"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:layout_gravity="left"
        android:src="@drawable/ic_launcher" />

    <ImageView
        android:id="@+id/imageView4"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:layout_gravity="right"
        android:src="@drawable/ic_launcher" />

</LinearLayout>

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/app_name" />

</LinearLayout>