2011-10-18 29 views
2

下午好!RelativeLayout与列表视图项目的行为不同

我面临的一个恼人的布局问题,我有时间和调查的时间......之后没有解释:/。 我创建了一个简化的测试案例,我在这里介绍。

我有一个简单的列表项的布局。

list item http://www.freeimagehosting.net/4075a.jpg

lis item image link

XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/relativeLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:minHeight="96dp"> 

<TextView android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="TextView" 
    android:id="@+id/textView1" android:textAppearance="?android:attr/textAppearanceMedium" 
    android:layout_centerVertical="true" android:layout_centerHorizontal="true" /> 

<TextView android:layout_width="wrap_content" 
    android:layout_height="wrap_content" android:text="TextView" 
    android:id="@+id/textView2" android:layout_alignParentTop="true" /> 

<ImageView 
    android:layout_width="10dp" 
    android:layout_height="match_parent" 
    android:id="@+id/imageView1" 
    android:src="@drawable/errorindicator" 
    android:layout_below="@id/textView2" /> 

</RelativeLayout> 

的errorindicator是一个红色矩形,你可以在图像上看到左侧。该XML看起来像:

<?xml version="1.0" encoding="utf-8"?> 
    <shape shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="@color/ControllingConflictColor" /> 
    <padding android:left="0dp" android:top="0dp" 
     android:right="0dp" android:bottom="0dp" /> 
    </shape> 

所描述的列表项布局按预期工作。

现在我尝试填充列表项如上所述的列表视图。结果看起来像这样:

list view with list items http://www.freeimagehosting.net/4cc4b.jpg

list view image link

相应的XML:

<?xml version="1.0" encoding="utf-8"?> 
    <ListView android:id="@+id/listView1" android:layout_width="fill_parent" 
     android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> 
     <!-- Preview: [email protected]/test --> 
    </ListView> 

正如你可以在图像上看到,红色矩形不匹配它的父在高度,因为它应该。这些图像是由设计师制作的,但仿真器和设备也具有相同的效果。我开发API级别8

**我很愿意,如果有人能解释我为什么如预期在列表视图中所描述的布局不起作用。为什么可绘制的形状表现不同? **

感谢您的时间:)

编辑:我有嵌入图像的问题,我用一个链接,而不是,对不起;( 编辑:添加XML抽拉标签

编辑:我的例子甚至可以变得更容易,我包含两个文本视图,因为它与我的真实布局有一些相似之处,您可以从示例中移除两个文本视图,但仍然存在问题,如果在列表视图中使用布局,则图像视图与定义的父级高度不匹配。

+0

您希望的布局设计是什么? – Venky

+0

你需要在所有文本视图下面的一行吗? – Venky

+0

Venky您可以在第一个链接的图像中看到所需的设计。问题是,如果我在列表视图中使用所描述的相对布局,可绘制的红色形状的行为会有所不同。 –

回答

0

因为我想我的期望行为是不可能的使用给定的布局管理器,我去哪个适合我的个人情况的另一种方式。

我已经重写了的RelativeLayout的onDraw有方法和油漆这红色矩形自己(完布局处理结束后,高度设定)...

0

我也发现很难使用RelativeLayout来完成它。那么试试你的行XML的布局。它使用LinearLayout。

<?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="wrap_content" 
    android:orientation="vertical"> 
    <TextView android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="TextView" 
     android:id="@+id/textView2" 
     android:layout_alignParentTop="true" /> 
    <LinearLayout android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 
     <LinearLayout android:layout_width="10dip" 
      android:layout_height="fill_parent" 
      android:background="@drawable/errorindicator"/>  
     <TextView android:layout_width="0dip" 
      android:layout_height="wrap_content" 
      android:text="TextView" android:layout_weight="1.0" 
      android:id="@+id/textView1" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:gravity="center"/> 
    </LinearLayout> 
</LinearLayout> 
+0

谢谢你的回答blessenm。如果我在列表视图中使用描述的相对布局,问题描述是一个简化示例,以显示可绘制形状与父级高度不匹配。因此,如果在列表视图中使用相同布局的行为是不同的。我知道有不同的方法可以在视觉上达到与我的例子相同的效果,但是布局比相对布局更简单和高效。问题更多的是,为什么可绘制的形状表现不同。我想在列表视图的布局过程中肯定有不同的东西... –

+0

我注意到,当为可绘制的形状指定大小时,它就出现了。稍后可能会尝试一下,看看有什么不对,因为它对我来说也很奇怪。 – blessenm

+0

非常感谢!请注意,我编辑了我的问题并指出,文本视图不相关。 –

0

如果进行资产为PNG,然后你可以9补丁并将其添加为RelativeLayout的背景

+0

感谢您的建议。我没有尝试过,但我可以想象,这也可以作为解决方法(即使没有9补丁和现有的形状可绘制)。但它仍然不能回答我的问题;( –