我的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>
答案 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))
努力改变列表视图本身的高度。现在问题是其他视图没有相应调整大小;在列表视图变得更大时,它们不会崩溃。