2016-11-22 2 views
0

を設定します。は、プログラムで、私はこのコードのようなイメージボタンの多くを作成しているのImageButtonマージン

TableRow tr = new TableRow(this); 
if (db != null) { 
     if (db.moveToFirst()) { 
      do { 
       ImageButton button = new ImageButton(this); 
       int ID = Integer.parseInt(db.getString(db.getColumnIndex("ID"))); 
       int resource = getResources().getIdentifier("unit" + ID, "drawable", getPackageName()); 
       System.out.println("unit" + ID + ":" + resource); 
       button.setImageResource(resource); 
       button.setOnClickListener(MainActivity.this); 
       tr.addView(button); 
       button.getLayoutParams().height = 250; 
       button.getLayoutParams().width = 250; 
       button.setScaleType(ImageView.ScaleType.FIT_CENTER); 
       //button.setLayoutParams(tableRowParams); 
       rowcount++; 
       if (rowcount % 5 == 0) { 
        layout.addView(tr); 
        tr = new TableRow(this); 
       } 
      } while (db.moveToNext()); 
     } 
    } 

そして、私はコードが見つかりました:

 TableLayout.LayoutParams tableRowParams = new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT); 
     tableRowParams.setMargins(0, 0, 0, 0); 

とやるしばらくのボタンに適用されますが。

button.setLayoutParams(tableRowParams); 

それはTableRow.LayoutParamsTableLayout.LayoutParamsを交換し、エラーメッセージ "android.widget.TableLayout $ LayoutParamsがandroid.widget.TableRow $ LayoutParamsにキャストすることはできません"

+0

[マージンを動的にコードに設定する - アンドロイド](0120-18752)[編集] –

答えて

0

が表示されます:

TableRow.LayoutParams tableRowParams = 
     new TableRow.LayoutParams(
      TableRow.LayoutParams.WRAP_CONTENT, 
      TableRow.LayoutParams.WRAP_CONTENT); 
tableRowParams.setMargins(0, 0, 0, 0); 
+0

ありがとう、これは私の間違いです – LittleTin

0

使用するLayoutParamsの種類は、ビュー自体ではなく、ビューのコンテナによって決まります。ボタンがTableRowの中に入っているので、TableLayout.LayoutParamsではなく、TableRow.LayoutParamsを使用する必要があります。

また、TableRowやButtonのスタイルを変更する必要がある場合は、クラスの新しいインスタンスを作成して余白を表示するのではなく、Button button = (Button) LayoutInflater.from(context).inflate(R.layout.button, tr, false);とその方法を使用してXMLレイアウトを拡張することができますXMLファイルで余白を設定することができます。

関連する問題