【问题标题】:Android RelativeLayout height not following GridView heightAndroid RelativeLayout 高度不跟随 GridView 高度
【发布时间】:2011-04-05 02:10:20
【问题描述】:

我在 RelativeLayout 中的 GridView 遇到问题,它又在 ScrollView 中。问题是RelativeLayout的高度没有跟随GridView内容的高度。当多行时,GridView 被剪裁,出现滚动条,这是不可取的。我试图使用来自 Android 层次结构查看器的屏幕截图来说明我的问题。您可以看到红色的 RelativeLayout 框如何剪裁了 GridView 的第二行。我正在粘贴页面的 XML 布局 (page.xml) 和单个网格项 (griditem.xml)。我已经使用以下代码来膨胀 gridAdapter 代码中的网格项:

/****************gridAdapter sn-p**********************/

public View getView(int position, View convertView, ViewGroup parent)
{

     View v;
        if(convertView==null){
            li = LayoutInflater.from(mContext);
            v = li.inflate(R.layout.griditem, null);

            //code for fetching textView and imageUrl content   

            TextView tv = (TextView)v.findViewById(R.id.icon_text);
            tv.setText(textContent);
            ImageView iv = (ImageView)v.findViewById(R.id.icon_image);

            //code for fetching and attaching image to imageView
        }
        else
        {
            v = convertView;
        }
        return v;
}

/***********gridAdapter结束sn-p**********************/

/***********起始页.xml**********************/

<TextView android:id="@+id/title" android:layout_weight="1"

        android:layout_width="320dip"
        android:layout_height="wrap_content" 
        android:singleLine="false"
        android:textStyle="bold" 
        android:textSize="14dip" 
        />

<ImageView android:id="@+id/image"
        android:layout_below="@+id/title"
        android:adjustViewBounds="true"
        android:layout_width="128dip"
        android:layout_height="96dip" 
        android:layout_marginRight="4dip"
        />


<TextView android:id="@+id/name" 
        android:layout_weight="1"
        android:layout_below="@+id/title"
        android:layout_toRightOf="@+id/image"
        android:layout_width="192dip"
        android:layout_height="wrap_content"
        android:paddingTop="2dip"
        android:textSize="12dip" 
        android:paddingLeft="2dip"
        />

<TextView android:id="@+id/location" 
        android:layout_weight="1"
        android:layout_below="@+id/name"
        android:layout_toRightOf="@+id/image"
        android:layout_width="192dip"
        android:layout_height="wrap_content"
        android:paddingTop="2dip"
        android:textSize="12dip" 
        android:paddingLeft="2dip"
        />

<TextView android:id="@+id/date1" 
        android:layout_weight="1"
        android:layout_below="@+id/location"
        android:layout_toRightOf="@+id/image"
        android:layout_width="192dip"
        android:layout_height="wrap_content"
        android:paddingTop="2dip"
        android:textSize="10dip" 
        android:paddingLeft="2dip"
        />          

<TextView android:id="@+id/date2" 
        android:layout_weight="1"
        android:layout_below="@+id/date1"
        android:layout_toRightOf="@+id/image"
        android:layout_width="192dip"
        android:layout_height="wrap_content"
        android:paddingTop="2dip"
        android:textSize="10dip" 
        android:paddingLeft="2dip"
        />


<Button android:id="@+id/button1"
        android:text="buttonText1"
        android:layout_weight="1"
        android:layout_below="@+id/image"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_marginLeft="96dip"       
        />

<Button android:id="@+id/button2"
        android:text="buttonText2"
        android:layout_weight="1"
        android:layout_below="@+id/image"
        android:layout_toRightOf="@+id/button1"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        />

<Button android:id="@+id/button3"
        android:text="Text"
        android:layout_weight="1"
        android:layout_below="@+id/image"
        android:layout_toRightOf="@+id/button2"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        />

<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
        android:id="@+id/gridview"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:layout_below="@+id/button1"
        android:layout_weight="1"

        android:numColumns="auto_fit"
        android:verticalSpacing="10dip"
        android:horizontalSpacing="10dip"
        android:stretchMode="columnWidth"
        android:gravity="center"
        />

/***********End page.xml************************/

/***********启动griditem.xml**********************/

android:gravity="center_horizo​​ntal">

/***********结束griditem.xml**********************/

你能告诉我我应该怎么做才能让RelativeLayout的高度跟随gridView的全长吗?

谢谢, 昆塔尔![替代文字][1]

截图如下: http://tinypic.com/r/98rs4n/4

【问题讨论】:

  • 您似乎仍然没有显示 griditem.xml 的内容,这可能是您的问题的主要原因。

标签: android


【解决方案1】:

很抱歉,最后一个代码 sn-p 没有正确显示。因此我再次粘贴它:

android:gravity="center_horizo​​ntal">

【讨论】:

    【解决方案2】:

    正如线程http://code.google.com/p/android/issues/detail?id=1394中提到的那样

    使用这个

    convertView = mInflater.inflate(R.layout.my_row, parent, false);

    修复了 froyo 下的问题。

    【讨论】:

      【解决方案3】:

      到目前为止,我能够解决这个问题的唯一方法是有点软糖。

      一旦您知道将要加载到网格中的项目数量,您就可以手动设置高度:

      final int gridWidth = myGrid.getWidth();
      final int cellWidthDP = 50;
      final int cellHeightDP = 80;
      
      final Resources r = getResources();
      final double cellWidthPx = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, cellWidthDP, r.getDisplayMetrics());
      final double cellHeightPx = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, cellHeightDP, r.getDisplayMetrics());
      
      final int itemsPerRow = (int) Math.floor((double) gridWidth / cellWidthPx);
      final int rowCount = (int) Math.ceil((double) itemCount / itemsPerRow);
      
      final LayoutParams prm = myGrid.getLayoutParams();
      prm.height = (int) Math.ceil((double) rowCount * cellHeightPx);
      
      myGrid.setLayoutParams(prm);
      

      【讨论】:

        【解决方案4】:

        这里有一个更好的(扩展高度 GridView)解决方案: https://stackoverflow.com/a/8483078/479478

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-18
          相关资源
          最近更新 更多