其他分享
首页 > 其他分享> > android – GridView根据行数不同的列数

android – GridView根据行数不同的列数

作者:互联网

我正在尝试这2天,我正在尝试为视图创建UI,在第一行中有两列,然后在第二行有三列,第三行再有两列等等.我还要实现动态data(表示行数/列数是动态的).

我没有任何想法实现这种类型的视图.我也尝试了stragged网格视图,但这是用于动态视图..但在这里我有1.2的静态2,3,2,3 …列,3,4..rows.请帮助我.任何教程都会对你有所帮助.

解决方法:

最后我已经解决了这个问题.我已经尝试过Raghunandan和user3278416的建议.并且在运行时除了表格布局之外做了所有的事情.这里是xml文件:

 <ScrollView  android:layout_width="match_parent"
    android:layout_height="match_parent">
<TableLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/table_layout"
     >

两个布局一个用于小布局(第二行),一个用于大一个(第一行):

  <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="130dp"
android:layout_height="160dp"
android:layout_margin="3dp"
android:background="@drawable/big_product_bg" >
<ImageView
    android:id="@+id/img_offersrowlayout"
    android:layout_width="120dp"
    android:layout_height="80dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="5dp"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:scaleType="fitXY"
    android:src="@drawable/img_bydefault" />

<TextView
    android:id="@+id/txt_title_offerrowlayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/img_offersrowlayout"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_marginTop="8dp"
    android:gravity="center_horizontal"
    android:singleLine="true"
    android:text="BenQ Digital camera"
    android:textColor="@color/green_app"
    android:textSize="15dp"
    android:textStyle="bold" />

小的一个:

<RelativeLayout
android:layout_width="90dp"
android:layout_height="160dp"
android:layout_margin="3dp"
android:background="@drawable/big_product_bg" >

<ImageView
    android:id="@+id/img_offersrowlayout"
    android:layout_width="90dp"
    android:layout_height="80dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="5dp"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:scaleType="fitXY"
    android:src="@drawable/img_bydefault" />

<TextView
    android:id="@+id/txt_title_homesmallrowlayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/img_offersrowlayout"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_marginTop="8dp"
    android:gravity="center_horizontal"
    android:singleLine="true"
    android:text="BenQ Digital camera"
    android:textColor="@color/green_app"
    android:textSize="15dp"
    android:textStyle="bold" />

现在的Java代码:

 int leftMargin_small=2;
int topMargin_small=5;
int rightMargin_small=2;
int bottomMargin_small=5;

   int j = 0;
   while (Show.size()>j) {

try {
     LayoutInflater inflater =       (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
     TableRow.LayoutParams param = new TableRow.LayoutParams(
                LayoutParams.MATCH_PARENT,
                LayoutParams.MATCH_PARENT, 1.0f);
     param.setMargins(leftMargin_small, topMargin_small, rightMargin_small, bottomMargin_small);
     LinearLayout layout1 =  new LinearLayout(getApplicationContext());
     TableRow.LayoutParams param_layout = new TableRow.LayoutParams(
                LayoutParams.MATCH_PARENT,
                LayoutParams.MATCH_PARENT, 1.0f);
     layout1.setLayoutParams(param_layout);
View question = inflater.inflate(R.layout.offers_rowlayout, null);

question.setLayoutParams(param);
//question.setId(pos);
TextView title = (TextView) question.findViewById(R.id.txt_title_offerrowlayout);
title.setText(""+">>"+Show.get(j).get("name"));

View question1 = inflater.inflate(R.layout.offers_rowlayout, null);
//question.setId(pos);
question1.setLayoutParams(param);
TextView title1 = (TextView) question1.findViewById(R.id.txt_title_offerrowlayout);
title1.setText(""+">>"+Show.get(j+1).get("name"));



View question_small = inflater.inflate(R.layout.home_row_small_layout, null);
//question.setId(pos);
question_small.setLayoutParams(param);
TextView title_small = (TextView) question_small.findViewById(R.id.txt_title_homesmallrowlayout);
title_small.setText(""+">>"+Show.get(j).get("name"));

View question1_small = inflater.inflate(R.layout.home_row_small_layout, null);
//question.setId(pos);
question1_small.setLayoutParams(param);
TextView title1_small = (TextView) question1_small.findViewById(R.id.txt_title_homesmallrowlayout);
title1_small.setText(""+">>"+Show.get(j+1).get("name"));

View question2_small = inflater.inflate(R.layout.home_row_small_layout, null);
//question.setId(pos);
question2_small.setLayoutParams(param);
TextView title2_small = (TextView) question2_small.findViewById(R.id.txt_title_homesmallrowlayout);
title2_small.setText(""+">>"+Show.get(j+2).get("name"));
       if (gett) {
      TableRow tr = new TableRow(getApplicationContext());

        TableLayout.LayoutParams trParams = new TableLayout.LayoutParams(
                TableLayout.LayoutParams.MATCH_PARENT,
                TableLayout.LayoutParams.MATCH_PARENT,1);
      //  trParams.setMargins(leftMargin, topMargin, rightMargin, bottomMargin);
        tr.setLayoutParams(trParams);
       layout1.addView(question);
       layout1.addView(question1);
       tr.addView(layout1);
    tablee.addView(tr);
   gett = false;
        j = j+2;
}
else
{
      TableRow tr = new TableRow(getApplicationContext());

        TableLayout.LayoutParams trParams = new TableLayout.LayoutParams(
                TableLayout.LayoutParams.MATCH_PARENT,
                TableLayout.LayoutParams.MATCH_PARENT,1);

        layout1.addView(question_small);
        layout1.addView(question1_small);
        layout1.addView(question2_small);
        tr.addView(layout1);
    tablee.addView(tr);
    gett = true;
    j = j+3;
}

} catch (Exception e) {
    e.printStackTrace();
}


  }

这里显示的是hashmap类型的arraylist,tablee是我在Xml文件中创建的tablelayout对象.

标签:android-gridview,android
来源: https://codeday.me/bug/20191003/1847089.html