在ListView项中设置背景

时间:2014-11-03 08:24:48

标签: android xml android-layout listview android-listview

您好我有自定义ListView适配器。 我尝试设置背景图像,但我无法设置每个项目的高度。 在每个项目中,我有以下xml布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/listMenuItem"
    android:layout_width="fill_parent"
    android:layout_height="80dp"
    android:background="@drawable/nasi_goreng">

    <!-- Thumbnail Image -->
    <com.android.volley.toolbox.NetworkImageView
        android:id="@+id/thumbnail"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_alignParentLeft="true"
        android:layout_marginRight="8dp" />

    <!-- Menu Title -->
    <TextView
         android:id="@+id/menuTitle"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignTop="@+id/thumbnail"
         android:layout_toRightOf="@+id/thumbnail"
         android:textSize="@dimen/menuTitle"
         android:textStyle="bold" />

    <!-- Post Date -->
    <TextView
        android:id="@+id/postDate"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/menuTitle"
        android:layout_marginTop="1dip"
        android:layout_toRightOf="@+id/thumbnail"
        android:textSize="@dimen/postDate" />

</RelativeLayout>

但结果是这样的:

enter image description here

更新 这是我的ListView xml:

<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="match_parent">

    <ListView 
        android:id="@+id/list" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:divider="@color/list_divider"
        android:dividerHeight="1dp"
        android:listSelector="@drawable/list_row_selector">
    </ListView>

</RelativeLayout>

列表选择器xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >

    <item android:drawable="@drawable/list_row_bg" android:state_pressed="false" android:state_selected="false"></item>
    <item android:drawable="@drawable/list_row_bg_hover" android:state_pressed="true"></item>
    <item android:drawable="@drawable/list_row_bg_hover" android:state_pressed="false" android:state_selected="false" ></item>

</selector>

如何修复身高?

谢谢

5 个答案:

答案 0 :(得分:1)

根据您的需要设计背景图片。确定列表项的大小(宽度和高度)并设计该大小的图像,然后将其用作背景图像。如果你想在标签中使用这个应用程序,然后设计多种尺寸的图像(根据android图像缩放)

阅读此链接(http://developer.android.com/guide/practices/screens_support.html)了解更多详情。

以下是图片资源的必备指南。

注意:对于其他屏幕密度,android更喜欢hdpi,xhdpi,xxhdpi,xxxhdpi。

因此,我们可以将每个图标和图像的缩放比例视为2:3:4:6:8。

  • mdpi:2x(基线)
  • hdpi:3x
  • xhdi:4x
  • xxhdi:6x
  • xxxhdpi:8x

答案 1 :(得分:0)

尝试设置 RelativeLayout android:layout_height =“wrap_content”而不是 android:layout_height =“80dp”如果它不适合你

请发布您的例外结果

问题可能来自您的列表选择器,您可以发布列表选择器

答案 2 :(得分:0)

在普通视图上设置背景图像的效果不是很好。当使用固定高度绘制此图像时,此relativelayout存在冲突。如果要以更好的性能显示此图像,则应将ImageView添加到此布局。

答案 3 :(得分:0)

android:layout_width&amp;在这种情况下,应该在dp&#39; s中指定android:layout_height,否则它将占用背景图像所需的空间......

答案 4 :(得分:0)

这是androidhive的一个例子,它按预期工作:

<?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="20dp"
    android:background="@color/feed_bg"
    android:descendantFocusability="blocksDescendants"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginLeft="@dimen/feed_item_margin"
        android:layout_marginRight="@dimen/feed_item_margin"
        android:layout_marginTop="@dimen/feed_item_margin"
        android:background="@drawable/bg_parent_rounded_corner"
        android:orientation="vertical"
        android:paddingBottom="@dimen/feed_item_padding_top_bottom"
        android:paddingTop="@dimen/feed_item_padding_top_bottom" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:paddingLeft="@dimen/feed_item_padding_left_right"
            android:paddingRight="@dimen/feed_item_padding_left_right" >

            <com.android.volley.toolbox.NetworkImageView
                android:id="@+id/profilePic"
                android:layout_width="@dimen/feed_item_profile_pic"
                android:layout_height="@dimen/feed_item_profile_pic"
                android:scaleType="fitCenter" >
            </com.android.volley.toolbox.NetworkImageView>

            <LinearLayout
                android:layout_width="160dp"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:paddingLeft="@dimen/feed_item_profile_info_padd" >

                <TextView
                    android:id="@+id/name"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:textSize="@dimen/feed_item_profile_name"
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/timestamp"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:textColor="@color/timestamp"
                    android:textSize="@dimen/feed_item_timestamp" />
            </LinearLayout>

            <Button
                android:id="@+id/button1"
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:focusable="false"
                android:background="@drawable/sharebutton" />

        </LinearLayout>

        <TextView
            android:id="@+id/txtStatusMsg"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="5dp"
            android:paddingLeft="@dimen/feed_item_status_pad_left_right"
            android:paddingRight="@dimen/feed_item_status_pad_left_right"
            android:paddingTop="@dimen/feed_item_status_pad_top" />

        <TextView
            android:id="@+id/txtUrl"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:linksClickable="true"
            android:paddingBottom="10dp"
            android:paddingLeft="@dimen/feed_item_status_pad_left_right"
            android:paddingRight="@dimen/feed_item_status_pad_left_right"
            android:textColorLink="@color/link" />

        <info.androidhive.listviewfeed.FeedImageView
            android:id="@+id/feedImage1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/white"
            android:scaleType="fitXY"
            android:visibility="visible" />
    </LinearLayout>

</LinearLayout>

请参阅profilepic部分。它的大小,即高度和宽度都是固定的,它可以工作......

那么如果使用fill_parent和wrap_content参数将图像视图与不同的布局隔离,而将imageview参数固定为dp的