从costumeadapter中的RelativeLayout更改高度

时间:2015-08-23 19:31:45

标签: android android-layout listview android-listview

嘿伙计我是Android开发的新手,我想为每个listview项目构建一个子项目。

就像这样:

  
    

ListView 1

  
     

子项目1

     
    

ListView 1

  
     

子项目1

我认为为每个listview项创建一个新的相对布局会更加容易,因此我的XML文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/wrap_layout"
    android:layout_width="fill_parent"
    android:layout_height="200dp"
    android:orientation="horizontal" >

    <RelativeLayout
        android:id="@+id/first_col"
        android:layout_width="fill_parent"
        android:layout_height="200dp" >

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="200dp"
            android:layout_alignParentBottom="true"
            android:orientation="vertical" >

            <ImageView
                android:id="@+id/bg_image"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:adjustViewBounds="true"
                android:scaleType="centerCrop" />

            <ImageView
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:adjustViewBounds="true"
                android:scaleType="centerCrop"
                android:src="@drawable/overlay_bg" />
        </RelativeLayout>

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="9dp" >

            <TextView
                android:id="@+id/name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_above="@+id/current_event"
                android:layout_alignParentLeft="true"
                android:layout_marginBottom="6dp"
                android:letterSpacing="1.2"
                android:shadowColor="@color/dark_grey"
                android:shadowDx="-2"
                android:shadowDy="2"
                android:shadowRadius="0.01"
                android:textColor="@color/white"
                android:textSize="22sp" />

            <ImageView
                android:layout_width="17dp"
                android:layout_height="17dp"
                android:layout_alignParentRight="true"
                android:layout_alignParentTop="true"
                android:src="@drawable/persons" />

            <TextView
                android:id="@+id/current_day"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/name"
                android:layout_alignParentBottom="true"
                android:text="TextView"
                android:textColor="@color/grey"
                android:textSize="13sp" />
        </RelativeLayout>
    </RelativeLayout>

        <RelativeLayout
        android:id="@+id/second_col"
        android:layout_width="fill_parent"
        android:layout_marginTop="200dp"
        android:layout_height="200dp" >

        <TextView
            android:id="@+id/test"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="15dp"
            android:layout_marginTop="24dp"
            android:text="TextView" />
        </RelativeLayout>

</RelativeLayout>

每个项目除以两列,第二列应该是隐藏列,这就是为什么我将布局高度更改为200dp。

为了展示完整的布局,我这样做了:

public View getView(final int position, View convertView, ViewGroup parent) {
            // here you let SimpleAdapter built the view normally.
            final View v = super.getView(position, convertView, parent);

            final RelativeLayout lebg = (RelativeLayout) v.findViewById(R.id.wrap_layout);


            lebg.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View b) {

                    lebg.getLayoutParams().height = 400;
                }
            });
            return v; 
        } 

我只需要将高度从200更改为400即可显示完整的Listview项目。

问题:

效果不好因为当我点击列表视图时它只会在滚动时改变高度...

有没有更好的方法来做我正在尝试的事情?

感谢。

1 个答案:

答案 0 :(得分:0)

当您更改LayoutParams时,您必须致电requestLayout查看更改:

lebg.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View b) {
        lebg.getLayoutParams().height = 400;
        requestLayout();
    }
});