2 h3c4lenovo h3c4lenovo 于 2013.06.08 00:46 提问

请问像我这样设置Listview的adapter高度为什么无效?

这是我adapter引入布局文件,我设置RelativeLayout 高度是140dp,但实际高度只有LinearLayout的100dp,为什么???

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout

            android:id = "@+id/myInfo_cell_RL"
            android:layout_width="match_parent"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"
            android:layout_marginTop="12dp"
            android:background="#00FF00"
            android:layout_height="140dp">

<LinearLayout
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:background="#000000"
        android:orientation="vertical"
        android:alpha="0.6"
        android:layout_width="100dp"
        android:layout_height="80dp"
        >

    <TextView
        android:id="@+id/myInfoCell_title"
        android:layout_height="40dp"
        android:layout_width="match_parent"
        android:gravity="right|center_vertical"
        android:textColor="#FFFFFF"
        android:textSize="18sp"
        android:text="This is title..."
        android:lines="1"
            />

    <TextView
        android:id="@+id/myInfoCell_author"
        android:layout_height="40dp"
        android:layout_width="match_parent"
        android:gravity="right|top"
        android:textColor="#FFFFFF"
        android:textSize="15sp"
        android:text="Helen"
        />
</LinearLayout>

2个回答

ygycomon
ygycomon   Rxr 2013.06.08 10:00

这是渲染的特性,当你用自定义的layout文件手动来inflate的时候最外层的高度值和宽度值都是无效的,这是API实现方式的问题

ygycomon
ygycomon textview有一个drawTop属性,在布局优化的实践中是推荐使用的,可以减少嵌套的层次
4 年多之前 回复
h3c4lenovo
h3c4lenovo 那我如何实现元素叠加?比如ImageView上面要叠加一层textView,怎么搞?
4 年多之前 回复
ygycomon
ygycomon 2、你可以把外层的高度设置为match,这样高度会由子元素的最大高度决定,不需要直接设置了
4 年多之前 回复
ygycomon
ygycomon 1、你那个嵌套的linearlayout完全没有作用,这样嵌套会减慢渲染的效率,item一多就会卡
4 年多之前 回复
h3c4lenovo
h3c4lenovo 请问比如我要设置固定高度的cell,不应该在layout文件的最外层设置cell的高度吗?那正确的思路应该是?
4 年多之前 回复
ygycomon
ygycomon 你可以考虑在inflate出来之后手动去调整width和height,不过我建议你仔细的审视一下,因为一般出现这样的情况都是你解决问题的思路不对
4 年多之前 回复
h3c4lenovo
h3c4lenovo 那怎么处理才是正确的?
4 年多之前 回复
cj6585256
cj6585256   2013.06.08 09:54

你这100dp还是LinearLayout的width???

可以换个方式 RelativeLayout 140dp

<LinearLayout android:layout_agin_parent_center= true
android:height =100dp

或者直接给LinearLayout paddingTop paddingBottom 设置值

Csdn user default icon
上传中...
上传图片
插入图片