【问题标题】:Set height of ListView onClick设置 ListView onClick 的高度
【发布时间】:2014-09-11 08:02:11
【问题描述】:

我的 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);
        }   
    });

以及这段代码 sn-p 发生的布局:

<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>

【问题讨论】:

    标签: android listview layoutparams


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      由于您的 ListView 被“卡在一个小的视图框中”,并且您将其高度设置为 wrap_content,我不确定您是否只有几个项目,或者如果你已经以其他方式设置了高度。因此,例如,我将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);
      

      【讨论】:

        猜你喜欢
        • 2015-03-16
        • 1970-01-01
        • 1970-01-01
        • 2013-10-07
        • 1970-01-01
        • 2012-07-27
        • 2011-04-04
        • 2014-08-27
        • 2012-11-29
        相关资源
        最近更新 更多