设置ListView onClick的高度

时间:2014-07-20 20:18:17

标签: android listview layoutparams

我的ListView目前停留在屏幕底部的一个小视图框中。当它被点击时,我希望它扩展到某个高度。我已经在这里阅读了如何做到这一点的指南,但似乎没有任何效果。这是我的代码。

    list.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Log.v("Miles", "Listview clicked");
            LayoutParams adapterParams = (LayoutParams) parent.getLayoutParams();
            adapterParams.height = 400;
            parent.setLayoutParams(adapterParams);
        }   
    });

此代码段的布局:

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="tribeTimes.EventFragment"
android:focusable="true"
android:focusableInTouchMode="true" >

<TextView
    android:id="@+id/event"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

   <TextView
       android:background="@drawable/buttonborder_selector"
        android:id="@+id/likes"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/event"
        android:layout_marginBottom="20dp"
        android:clickable="true"
        android:gravity="center"
        android:textAppearance="?android:attr/textAppearanceMedium" />

   <EditText
       android:background="@drawable/buttonborder_selector"
       android:hint="@string/yourComment"
       android:id="@+id/yourComment"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_below="@id/likes"
       android:layout_marginBottom="20dp"
       android:gravity="left"
       android:inputType="text" >
       <requestFocus/>
    </EditText>

    <ListView
        android:layout_below="@id/yourComment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/listInParent" >
    </ListView>

</RelativeLayout>

2 个答案:

答案 0 :(得分:1)

由于你的ListView是&#34;卡在一个小小的视图框&#34;中,并且你的高度设置为wrap_content,我不确定你是否#&# 39;其中只有几个项目,或者如果你已经设置了另一个高度。因此,我已将ListView的初始高度设置为100dp作为示例。我确定你需要调整一些东西。

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="tribeTimes.EventFragment"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:focusable="true"
    android:focusableInTouchMode="true" >

    <LinearLayout
        android:layout_width="match_parent" 
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_alignParentTop="true" >

        <TextView
            android:id="@+id/event"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <TextView       
            android:id="@+id/likes"
            android:background="@drawable/buttonborder_selector"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:clickable="true"
            android:gravity="center"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <EditText
            android:id="@+id/yourComment"
            android:background="@drawable/buttonborder_selector"
            android:hint="@string/yourComment"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:gravity="left"
            android:inputType="text" >
            <requestFocus/>
        </EditText>

    </LinearLayout>

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="100dp"
        android:layout_alignParentBottom="true"
        android:id="@+id/listInParent" >
    </ListView>

</RelativeLayout>

然后,在调整ListView的大小时,您需要在设置之前为参数添加布局规则。

RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(list.getWidth(), 400);
lp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
list.setLayoutParams(lp);

答案 1 :(得分:0)

出于某种原因,list.setLayoutParams(new RelativeLayout.LayoutParams(400, 600))努力改变列表视图本身的高度。现在问题是其他视图没有相应调整大小;在列表视图变得更大时,它们不会崩溃。