Imageview从布局中消失

时间:2011-05-31 15:35:16

标签: android imageview relativelayout

我有一个相对布局,我在我的应用程序中用于多个列表显示。出于分离目的,我有一个图像,我在顶部横幅和实际列表视图本身之间填充了GradientDrawable。当活动首次启动时,图像显示正常,但只要我与ListView交互,drawable就会消失。如果我尝试在Imageview上调用bringToFront,它首先根本不会绘制。

我不知道我在这里做错了什么,请帮忙

这是我的xml布局:

<RelativeLayout android:id="@+id/listLayout2" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android" >

    <ImageView android:src="@drawable/icon" 
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content" 
        android:id="@+id/school_Logo"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginBottom="5.0dip" />

    <TextView android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_toRightOf="@+id/school_Logo" 
        android:textSize="15.0sp"
        android:text="List Title" 
        android:id="@+id/List_Title" 
        android:layout_alignTop="@+id/school_Logo" 
        android:layout_alignBottom="@+id/school_Logo" 
        android:gravity="center_vertical"
        android:layout_marginLeft="5.0dip" />

    <ImageView android:id="@+id/Image_Divider" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_below="@+id/school_Logo" 
        android:layout_alignLeft="@+id/school_Logo"
        android:layout_marginBottom="10.0dip" />

    <Button android:text="Post message" 
        android:id="@+id/postButton" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:visibility="gone"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="5.0dip" />

    <ListView android:id="@android:id/list" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:scrollingCache="false"
        android:cacheColorHint="#00000000" 
        android:layout_below="@+id/Image_Divider" />

</RelativeLayout>

以下是我为它创建drawable的方法

int[] colors = {Liveblogging_Main.borderColor,Liveblogging_Main.borderColor,Liveblogging_Main.borderColor};
Drawable dividerDrawable = new GradientDrawable(Orientation.RIGHT_LEFT, colors);

ImageView topDivider = (ImageView) findViewById(R.id.Image_Divider);
topDivider.setImageDrawable(dividerDrawable);

4 个答案:

答案 0 :(得分:0)

我不确定为什么会这样,但我会为你的布局选择另一种结构,一种没有RelativeLayout。尝试这样的事情:

<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical">
   <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="Horizontal">
      <ImageView  android:src="@drawable/icon" 
                android:layout_height="wrap_content" 
                android:layout_width="wrap_content" 
                android:id="@+id/school_Logo"
                android:layout_alignParentLeft="true"
                android:layout_alignParentTop="true"
                android:layout_marginBottom="5.0dip"
                >
       </ImageView>

       <TextView   android:layout_width="wrap_content" 
                android:layout_height="wrap_content" 
                android:layout_toRightOf="@+id/school_Logo" 
                android:textSize="15.0sp"
                android:text="List Title" 
                android:id="@+id/List_Title" 
                android:layout_alignTop="@+id/school_Logo" 
                android:layout_alignBottom="@+id/school_Logo" 
                android:gravity="center_vertical"
                android:layout_marginLeft="5.0dip"
                >
       </TextView>
       <Button android:text="Post message" 
                android:id="@+id/postButton" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content" 
                android:visibility="gone"
                android:layout_alignParentRight="true"
                android:layout_alignParentTop="true"
                android:layout_marginTop="5.0dip">
       </Button>


   </LinearLayout>
   <ImageView  android:id="@+id/Image_Divider" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content" 
                android:layout_below="@+id/school_Logo" 
                android:layout_alignLeft="@+id/school_Logo"
                android:layout_marginBottom="10.0dip"
                >
   </ImageView>
   <ListView   android:id="@android:id/list" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content" 
                android:scrollingCache="false"
                android:cacheColorHint="#00000000" 
                android:layout_below="@+id/Image_Divider"
                >
   </ListView>
</LinearLayout>

答案 1 :(得分:0)

您是否尝试将Image_Divider,ImageView的高度设置为dp中固定的值?我没有看到ImageView的高度应该来自哪里(可能是错误的)。

顺便说一句,你为什么不用XML定义GradientDrawable? http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape

答案 2 :(得分:0)

尝试设置drawable的边界

dividerDrawable.setBounds(0, 0, dividerDrawable.getIntrinsicWidth(),dividerDrawable.getIntrinsicHeight());

答案 3 :(得分:0)

我甚至算你的代码中发现单个问题,Dan F:)

您的代码看起来是正确的,我相信还有其他一些与此提供代码无关的问题,

然而,这是谷歌家伙给出的列表视图的最佳示例 ,我想知道这是否可以帮助你一点

Dev.android.list