使用填充时,ImageViews不会垂直对齐

时间:2013-08-20 11:43:38

标签: android padding

我试图将两个ImageView并排放在图像周围。我一直在使用Padding,Margin等,所有都有相同的效果(见下图)

One image is shifted upwards

你可以看到右边的图像向上移动,我该怎么做呢?

这是我使用的布局文件:

<?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:orientation="vertical" >

    <!-- Top Row -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <ImageView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="@string/tab_headlines"
            android:src="@drawable/headlines"
            android:layout_margin="5sp"
            />
        <ImageView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="@string/tab_headlines"
            android:src="@drawable/headlines"
            />

    </LinearLayout>

我将使用更多行的图像,因此额外的LinearLayout

3 个答案:

答案 0 :(得分:2)

使用layout_weight平均划分布局。请尝试以下代码:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <!-- Top Row -->

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

        <ImageView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="6dp"
            android:layout_marginRight="3dp"
            android:layout_weight="1"
            android:contentDescription="@string/tab_headlines"
            android:src="@drawable/headlines" />

        <ImageView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="3dp"
            android:layout_marginRight="6dp"
            android:layout_weight="1"
            android:contentDescription="@string/tab_headlines"
            android:src="@drawable/headlines" />
    </LinearLayout>
</LinearLayout>

此外,请勿使用sp指定布局尺寸。请改用dp

答案 1 :(得分:1)

修复垂直对齐方式:

android:layout_height="match_parent"

中使用ImageView

android:layout_height="match_parent"内使用ImageView,它将与其LinearLayout的父android:layout_height="wrap_content"

匹配

现在出现问题为什么ImageViews 的高度相同?

由于您LinearLayout's Height中的automatically chosen from ImageView,您的父Whose height is greater将成为android:layout_height="wrap_content" LinearLayout的原因!

并使用android:layout_height="match_parent",您将使用身高较小的same height for ImageView


修复水平对齐:

使用android:layout_weight="equal weight value for btoh"

将您的代码更改为

   <ImageView 
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:contentDescription="@string/tab_headlines"
        android:src="@drawable/headlines"
        android:layout_margin="5sp"
        />
    <ImageView 
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:contentDescription="@string/tab_headlines"
        android:src="@drawable/headlines"
        />

答案 2 :(得分:1)

您已为左侧图像指定了layout_margin,但未给出右侧图像。这就是问题所在。如果您只想连续两个图像,并且两者的图像大小相同,那么您可以使用layout_weight属性并为它们之间的空间填充。 所以,试试吧。它会工作。

    

    <!-- Top Row -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <ImageView 
            android:layout_width="0dp"
            android:layout_height="wrap_content"
             android:layout_weight="0.5"
            android:contentDescription="@string/tab_headlines"
            android:src="@drawable/headlines"
            android:padding="3dp"
            />
        <ImageView 
            android:layout_width="0dp"
            android:layout_height="wrap_content"
           android:layout_weight="0.5"
            android:contentDescription="@string/tab_headlines"
            android:src="@drawable/headlines"
           android:padding="3dp"
            />

    </LinearLayout>