2011-01-04 5 views
0

私は8x8ボタンでチェスゲームボードを作成しようとしています。私はネストされたLinearLayoutsを使用しています。問題は、私が取り除くことができないImageViewの各行の間にパディングがあることです。これは私がSOFAR持っているもの、ボードは正方形であるべきではなく、次のとおりです。アンドロイド:直線レイアウトからパディングを削除して正方形のレイアウトを作成する

alt text

public class BoardLayout extends LinearLayout { 
    public BoardLayout(Context context) { 
     super(context); 

     LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.FILL_PARENT, 
      LinearLayout.LayoutParams.WRAP_CONTENT, 1.0f); 

      setLayoutParams(parms); 
      setOrientation(LinearLayout.VERTICAL); 
      setPadding(0, 0, 0, 0); 

      for (int i = 0; i < 8; i++) { 
       LinearLayout row = new LinearLayout(context); 
       row.setLayoutParams(parms); 
       row.setOrientation(LinearLayout.HORIZONTAL); 
       row.setPadding(0, 0, 0, 0); 

       for (int j = 0; j < 8; j++) { 
        ImageView button = new ImageView(context); 
        button.setLayoutParams(parms); 
        button.setImageResource(R.drawable.icon); 
        button.setAdjustViewBounds(true); 
        button.setPadding(0, 0, 0, 0); 

        row.addView(button); 
       } 
       addView(row); 
      } 
      setSquare(); 
    } 
    public void setSquare() { 
     int size = Math.min(getWidth(), getHeight()); 

     // setHeight(size); // Not Function, but this is what I need 
     // setWidth(size); // Not Function, but this is what I need 

     // also doesn't work 
     setLayoutParams(new LinearLayout.LayoutParams(size, size, 1.0f)); 
    } 
} 

ソリューション:

としては、TableLayoutは、私は「何のために優れている提案私はやっています。そのため、メインクラスをTableLayoutに、ネストしたLinearLayoutsをTableRowに変更する必要があります。

setShrinkAllColumns(true); 
setStretchAllColumns(true); 

をし、挿入された各項目について、私はまた、呼び出す必要がありました:

しかし、一人でそれを修正しなかったことを、私はまた、TableLayoutに次のように呼び出す必要がありました

setAdjustViewBounds(true); 

答えて

1

TableLayout

クラスの概要

行と列に をその子を配置したレイアウト。 TableLayout は、多くのTableRow オブジェクトで構成され、それぞれが という行を定義します(実際には、他の の子を持つことができます。詳細は となります)。 TableLayoutコンテナは、 行の境界線、 列、またはセルを表示しません。

0

あなたはネストされたLinearLayoutsの代わりにGridViewまたはTableLayoutを使用する方が良いでしょう。

関連する問題