无法在ListView行(RelativeLayout)中将ImageViews对齐到左侧

时间:2013-07-31 19:51:08

标签: android android-layout listview relativelayout

Actual View

这就是我目前的观点。

如您所见,图标并非全部对齐到左侧。红线是我的目标。如果他们一直走到左边,没问题,因为我可以稍后用marginLeft来解决。

这是我的XML代码( layout / listview_style_listview.xml ):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/BackGroundColor"
    android:orientation="vertical"
    android:scaleType="center" >

    <LinearLayout
        android:id="@+id/titleLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="2dp"
        android:layout_marginBottom="2dp"
        android:layout_marginLeft="7dp"
        android:layout_marginRight="7dp"
        android:background="@color/BackGroundColor"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/sectionTitle"
            style="@style/sectionTitle"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="left"
            android:text="(blank)" />

        <Button
            android:id="@+id/sectionInfoButton"
            android:layout_width="33dp"
            android:layout_height="33dp"
            android:layout_gravity="right"
            android:layout_marginLeft="3dp"
            android:layout_weight="0"
            android:background="@drawable/infoicon" />

        <Button
            android:id="@+id/sectionInfoButton"
            android:layout_width="33dp"
            android:layout_height="33dp"
            android:layout_gravity="right"
            android:layout_marginLeft="3dp"
            android:layout_weight="0"
            android:background="@drawable/filtericon" />

        <Button
            android:id="@+id/sectionOptionsButton"
            android:layout_width="33dp"
            android:layout_height="33dp"
            android:layout_gravity="right"
            android:layout_marginLeft="3dp"
            android:layout_weight="0"
            android:background="@drawable/menuicontop2" />

        <Button
            android:id="@+id/addCatButton"
            android:layout_width="33dp"
            android:layout_height="33dp"
            android:layout_gravity="right"
            android:layout_marginLeft="3dp"
            android:layout_weight="0"
            android:background="@drawable/effect_button_add_cat_click" />
    </LinearLayout>

    <View
        android:layout_width="match_parent"
        android:layout_height="3dp"
        android:layout_marginBottom="0dp"
        android:layout_marginLeft="0dip"
        android:layout_marginRight="0dip"
        android:background="@color/blueOceanStroke" />

    <ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:divider="@color/BlueOcean"
        android:dividerHeight="1dp"
        android:listSelector="@drawable/listview_style_list_selector"
        android:paddingBottom="1dp" />

</LinearLayout>

这是我的XML代码( layout / listview_style_row.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:minHeight="35dp" >

    <ImageView
        android:id="@+id/catThumbnail"
        android:layout_width="32dp"
        android:layout_height="32dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/bank1" />

    <TextView
        android:id="@+id/sectionTitle"
        style="@style/title"
        android:layout_width="97dp"
        android:layout_height="32dp"
        android:layout_alignBottom="@+id/catThumbnail"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_marginLeft="66dp"
        android:gravity="center_vertical"
        android:text="Title Text"
        android:textColor="@color/listsTextColor"
        android:textSize="15sp"
        android:textStyle="normal"
        android:typeface="normal" />

    <ImageView
        android:layout_width="25dip"
        android:layout_height="32dp"
        android:layout_alignBottom="@+id/sectionTitle"
        android:layout_alignParentRight="true"
        android:gravity="center_vertical"
        android:src="@drawable/arrow" />

</RelativeLayout>

PS:我在屏幕截图后面右侧添加了一个箭头图标,这就是为什么它没有显示在图像上,但我想这并不重要。

3 个答案:

答案 0 :(得分:0)

从截图中可以看出布局是正常的,因为背面颜色@ color / blueOceanStroke的分隔线一直都是这样,分隔符也是如此。问题必须在“@ + id / catThumbnail”中,如果你测量红线和黄色方块左边缘之间的距离,并将它与方形右边缘和字母左边缘之间的距离进行比较“B”与它不应该是一样的。

我的猜测是@ drawable / bank1中有一些填充王。尝试完全删除它,看看字母“B”是否与标题对齐。

希望这会有所帮助......

答案 1 :(得分:0)

我能够在listview_style_row.xml中的“ImageView @ + id / catThumbnail”上使用android:layout_marginLeft =“ - 10dp”修复它,但我真的不认为这是最终完美设计的应用程序的有效解决方案,是?对我来说,把负值放在那里,有些不对劲,对吗?

答案 2 :(得分:0)

正如其他人提到的,我会尝试删除ImageView并查看TextView是否会与红线齐平。如果是,ImageView有一些问题,如果没有,那就是其他问题。此外,ImageView可能没有相同的高度和宽度,并且可能会因设置为32 dp而导致缩放问题,请参阅:Unwanted padding around an ImageView

将ImageView包装在FrameLayout中可能更容易。像这样:

<FrameLayout>
    android:layout_width="32dp"
    android:layout_height="32dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true" >

    <ImageView
        android:id="@+id/catThumbnail"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:src="@drawable/bank1" />

</FrameLayout>

或者,如果这不起作用,请尝试将图像视图和/或框架布局的宽度和高度设置为wrap_content。此外,如果该图像是9补丁,则可能还有其他原因。