Android自定义列表视图布局问题

时间:2014-05-14 23:10:36

标签: android android-layout listview android-listview

我很难获得自定义列表视图行布局来处理不同的图像大小,同时保持其整体形状正确。

我希望使用不同大小的不同图像来实现以下Listview行。通过将图像缩放到特定大小,每行应具有相同的大小。

我想要的行布局 enter image description here

我的代码(注意我已经尝试了几种不同的方法,但都没有正确缩放(即一个图像不应该大于另一个图像)或者它们不能保持在正确的位置相对于彼此。

<ImageView
    android:id="@+id/iv_logo"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:src="@drawable/logo1" />

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_alignParentTop="true"
    android:layout_weight="1"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/league_name"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginRight="6dip"
        android:layout_weight="1"
        android:text="Text" />

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

        <ImageView
            android:id="@+id/iv_image1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_marginRight="6dip"
            android:layout_weight="1"
            android:src="@drawable/image1" />

        <ImageView
            android:id="@+id/iv_image2"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_marginRight="6dip"
            android:layout_weight="1"
            android:src="@drawable/image2" />

        <ImageView
            android:id="@+id/iv_image3"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_marginRight="6dip"
            android:layout_weight="1"
            android:src="@drawable/image3" />
    </LinearLayout>
</LinearLayout>

这可能是几个问题,每个想象或文本视图周围的空间,而不是缩放到xml布局中设计的相同大小... enter image description here

3 个答案:

答案 0 :(得分:2)

我使用了RelativeLayout,以下是解决方案。 您需要编辑xml一点,因为我使用了背景颜色。无论如何,检查一下是否有效;如果没有,我将开始研究LinearLayout解决方案:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="128dp"
    >
<ImageView
android:id="@+id/iv_logo"
android:layout_width="128dp"
android:layout_height="128dp"
android:background="@color/blue" 
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
/>
<LinearLayout
android:layout_toRightOf="@id/iv_logo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/red"

>
<TextView
    android:id="@+id/league_name"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:background="@color/orange"
    android:textColor="@color/white"
    android:text="Text" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="3"
    android:orientation="horizontal"
    android:background="@color/black"
     >
   <ImageView
        android:id="@+id/iv_image1"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:background="@color/gray" />

    <ImageView
        android:id="@+id/iv_image2"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:background="@color/yellow" />

    <ImageView
        android:id="@+id/iv_image3"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:background="@color/green" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>

答案 1 :(得分:1)

试试这个:

<ImageView
    android:id="@+id/iv_logo"
    android:layout_width="0px"
    android:layout_height="match_parent"
    android:src="@drawable/logo1" android:layout_weight="3"/>

<LinearLayout
    android:layout_width="0px"
    android:layout_height="match_parent"
    android:orientation="vertical" android:layout_weight="7">

    <TextView
        android:id="@+id/league_name"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginRight="6dip"
        android:layout_weight="1"
        android:text="Text" />

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

        <ImageView
            android:id="@+id/iv_image1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginRight="6dip"
            android:layout_weight="1"
            android:src="@drawable/image1" />

        <ImageView
            android:id="@+id/iv_image2"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginRight="6dip"
            android:layout_weight="1"
            android:src="@drawable/image2" />

        <ImageView
            android:id="@+id/iv_image3"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginRight="6dip"
            android:layout_weight="1"
            android:src="@drawable/image3" />
    </LinearLayout>
</LinearLayout>

答案 2 :(得分:0)

// Try this way,hope this will help you...

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="5dp" >

    <ImageView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:src="@drawable/ic_launcher"
        android:layout_weight="0.25"
        android:scaleType="fitXY"/>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.75"
        android:orientation="vertical">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="TextView"
            android:gravity="center"/>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <ImageView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:scaleType="fitXY"
                android:src="@drawable/ic_launcher"/>
            <ImageView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:scaleType="fitXY"
                android:src="@drawable/ic_launcher"/>
            <ImageView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:scaleType="fitXY"
                android:src="@drawable/ic_launcher"/>
            </LinearLayout>
        </LinearLayout>
</LinearLayout>