Jay*_*ren 6 android android-listview android-relativelayout
我在Android 1.5中使用列表视图来显示图像旁边的图像和文本列表.我试图垂直居中文本,但文本位于行的顶部而不是居中.以下是我的布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/row"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dip">
<ImageView android:id="@+id/item_image" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:paddingRight="10dip"
android:src="@drawable/default_image" android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_centerVertical="true"
android:gravity="center_vertical"/>
<TextView android:id="@+id/item_title"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_toRightOf="@id/item_image"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_centerVertical="true"
android:gravity="center_vertical"
/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
当我试图垂直居中文本时,我需要设置alignParentTop ="true"似乎很奇怪,但如果我不这样做,文本甚至都不显示.我究竟做错了什么?
Ste*_*ley 16
编辑后评论:
事实证明,使用RelativeLayout进行这项工作并不容易.在答案的底部,我已经包含了一个RelativeLayout,它可以提供所需的效果,但只有在它包含在ListView中之后.之后,出现了问题中描述的相同问题.这是通过使用LinearLayout(s)来修复的.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:orientation="horizontal">
<ImageView android:id="@+id/pickImageImage"
android:layout_width="100dp"
android:layout_height="80dp"
android:background="@drawable/icon"
android:scaleType="fitXY"
android:layout_marginRight="10dp"/>
<TextView android:id="@+id/pickImageText"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:gravity="left|center_vertical"
android:text="I'm the text"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
如果您想要两个文本框,可以orientation="vertical"在ImageView之后嵌套第二个和LinearLayout,然后将文本框放在那里.
这有效,但我不得不承认我不知道为什么RelativeLayouts没有.例如,Romain Guy撰写的这篇博文专门说明了RelativeLayout应该.当我尝试它时,我从来没有完成它的工作; 诚然,我并没有像他那样完全做到,但我唯一的改变是TextViews的一些属性,这不应该产生那么大的差别.
这是最初的答案:
我认为你将Android与RelativeLayout中所有那些有些矛盾的指令混淆了.我把你的东西重新格式化为:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/row"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dip">
<ImageView android:id="@+id/item_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="10dip"
android:src="@drawable/icon"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"/>
<TextView android:id="@+id/item_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/item_image"
android:layout_centerVertical="true"
android:text="Blah!"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
这很好.我删除了许多冗余,android:layout_alignParentxxx因为它们没有必要.此视图现在出现在左上角的图片和垂直居中的文本.如果你想让图片垂直居中,那么你就不能让RelativeLayout在android:layout_height ="wrap_content",因为它试图使自己不高于图片的高度.您必须指定一个高度,例如80dp,然后使用android:scaleType ="fitXY"将ImageView设置为固定高度,如60dp,以使其缩小以适合.
| 归档时间: |
|
| 查看次数: |
22174 次 |
| 最近记录: |