0

タイトルと同じように、ImageViewをtableRowに均等に広げることに問題があります。私のXMLは次のとおりです。拡散画像はタブローに均等に表示されます

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="horizontal"> 
    <ProgressBar/> 
    <TextView/> 

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/scrollView" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_below="@+id/progressBar"> 

    <TableLayout 
     android:id="@+id/tableLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
     </TableLayout> 

</ScrollView> 

活動を力学表は次のコードを使用して作成されて開始された後:

 for (int i = 0; i < 4; i++) { 
     tableRow = new TableRow(this); 
     tableRow.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 
       ViewGroup.LayoutParams.WRAP_CONTENT)); 

     tableRow.setId(i + 1); 
     tableRow.setBackgroundResource(R.mipmap.shelfboard); 
     tableRow.setPadding(20, 0, 20, 0); 
     tableRow.setOnClickListener(thisvariable); 

     tableLayout.addView(tableRow); 
    }  

今私は同じ幅のImageViewsの異なる数を追加したいです各tableRowごとにtableRow。

I 4 TableRows

  • はのTableRowする3
  • 7 ImageViewsを追加のTableRowする3 ImageViewsを追加のTableRowする5 ImageViewsを追加のTableRowする2 ImageViewsを追加有する4

マイコード:

for (int i = 0; i < adpList.size(); i++) { 
      int row = adpList.get(i).getShelfBoard(); 
      if (row==1) { 
       int productsPerBoard = 2; 
       int width = (tableLayout.getWidth())/productsPerBoard; 

       TableRow.LayoutParams tlp = new TableRow.LayoutParams(width, TableRow.LayoutParams.MATCH_PARENT); 

       productPicture = new ImageView(this); 
       r = (TableRow) findViewById(row); 
       productPicture.setLayoutParams(tlp); 
      } 
      if (row==2) { 
       int productsPerBoard = 5; 
       int width = (tableLayout.getWidth())/productsPerBoard; 


       TableRow.LayoutParams tlp = new TableRow.LayoutParams(width, TableRow.LayoutParams.MATCH_PARENT); 
       productPicture = new ImageView(this); 
       productPicture.setBackgroundResource(R.drawable.border); 
       r = (TableRow) findViewById(row); 

       productPicture.setLayoutParams(tlp); 
      } 
      if (row==3) { 
       int productsPerBoard = 3; 
       int width = (tableLayout.getWidth())/productsPerBoard; 
       TableRow.LayoutParams tlp = new TableRow.LayoutParams(width, TableRow.LayoutParams.MATCH_PARENT); 

       productPicture = new ImageView(this); 
       r = (TableRow) findViewById(row); 
       productPicture.setLayoutParams(tlp); 
      } 
      if (row==4) { 
       int productsPerBoard = 7; 
       int width = tableLayout.getWidth()/productsPerBoard; 

       TableRow.LayoutParams tlp = new TableRow.LayoutParams(width, TableRow.LayoutParams.MATCH_PARENT); 

       productPicture = new ImageView(this); 
       r = (TableRow) findViewById(row); 
       productPicture.setLayoutParams(tlp); 
      } 
      productPicture.setBackgroundResource(R.mipmap.ic_launcher); 
      r.addView(productPicture);  

残念ながら、すべての行には2枚の画像しかありません。それは常に最初のボードの幅をとります。私の出力:私は、各行にImageViewsの異なる数を追加することができますどのように

enter image description here

答えて

0

私は複雑すぎると思った。 LayoutParamsを変更すると、私の問題は解決しました:

r = (TableRow) findViewById(shelfboard); 
    productPicture = new ImageView(this); 

    TableRow.LayoutParams tlp = new TableRow.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT, 1f); 
    tlp.setMargins(0, 20, 0, 50); 
    productPicture.setLayoutParams(tlp);  
関連する問題