GridView android中每行的不同列号

时间:2013-11-02 12:07:06

标签: android android-gridview

我必须使用Gridview创建UI。图像是动态的,因为它来自网络服务。

我可以使用xml定义列号,但第0个索引处的项目必须有一个完整的图像,然后其余部分应分成列。

感谢任何帮助。

4 个答案:

答案 0 :(得分:2)

你应该使用TableLayoutGridView不支持跨越操作。

  

将子项排列为行和列的布局。一个   TableLayout由许多TableRow对象组成,每个对象定义一个   行(实际上,你可以有其他孩子,这将被解释   下面)。 TableLayout容器不显示其边框线   行,列或单元格。每行有零个或多个单元格;每个细胞   可以容纳一个View对象。该表具有与行一样多的列   最细胞。表格可以将单元格留空。 细胞可以跨越   列,就像在HTML中一样。

您可以看到示例here

答案 1 :(得分:1)

基于Jack K Fouani。一些更改将保留整个图像的裁剪:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

   <!-- Large Image   -->
    <ImageView
         android:id="@+id/image"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true" />
    <!-- //Large Image -->

    <!-- Small Images -->
    <GridView 
      android:id="@+id/list"
      android:numColumns="auto_fit"
      android:columnWidth="120dip"
      android:gravity="center"
      android:layout_width="fill_parent"
      android:layout_weight="1"
      android:layout_height="0dip" >
   </GridView>
    <!-- Small Images -->

</LinearLayout>

快速解决方案,其他人有很多工作,尝试一下。你可能会喜欢它。

GridView gv = findViewById(R.id.list);
        gv.setOnScrollListener(new AbsListView.OnScrollListener() {

            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onScroll(AbsListView arg0, int firstVisibleItem, int arg2, int arg3) {
                // TODO Auto-generated method stub
                ImageView iView = findViewById(R.id.image);
                if (firstVisibleItem == 0)
                {
                    iView.setVisibility(View.VISIBLE);
                }
                else
                {
                    iView.setVisibility(View.Gone);
                }
            }
        });

答案 2 :(得分:0)

您可以使用GrideView权重= 1及以上添加ImageView

例如,如果您想使用GrideView,这是完整的示例布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

   <!-- Large Image   -->
    <ImageView
         android:id="@+id/image"
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:layout_height="0dip"
        android:layout_gravity="center_horizontal"
        android:scaleType="centerCrop" />
    <!-- //Large Image -->

    <!-- Small Images -->
    <GridView 
      android:id="@+id/list"
      android:numColumns="auto_fit"
      android:columnWidth="120dip"
      android:gravity="center"
      android:layout_width="fill_parent"
      android:layout_weight="1"
      android:layout_height="0dip" >
   </GridView>
    <!-- Small Images -->

</LinearLayout>

此布局与您的请求完全相同

enter image description here

答案 3 :(得分:0)

我通过使用ListView解决了它。添加了一个listView Header的视图。然后在列表视图的子项内部添加了两个视图。在自定义适配器的getView方法中,我每次都将位置增加一个。

P.S:如果要使用无限适配器实现上述视图,则必须找到更好的解决方案。