我有一个相对布局,我在我的应用程序中用于多个列表显示。出于分离目的,我有一个图像,我在顶部横幅和实际列表视图本身之间填充了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);
答案 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:)
您的代码看起来是正确的,我相信还有其他一些与此提供代码无关的问题,
然而,这是谷歌家伙给出的列表视图的最佳示例 ,我想知道这是否可以帮助你一点