2016-11-22 86 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); 

它會顯示錯誤消息 「android.widget.TableLayout $的LayoutParams不能轉換到android.widget.TableRow $的LayoutParams」

+0

可能重複[在代碼中動態設置邊距-Android](http://stackoverflow.com/questions/12826067/setting-margins-dynamically-in-code-android) –

回答

0

更換TableLayout.LayoutParamsTableRow.LayoutParams

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之內,因此您需要使用TableRow.LayoutParams而不是TableLayout.LayoutParams。如果您需要爲TableRow或Button設置樣式,而不是創建類的新實例並以這種方式查看邊距,那麼可以使用Button button = (Button) LayoutInflater.from(context).inflate(R.layout.button, tr, false);來擴充XML佈局,並且以這種方式使用Button button = (Button) LayoutInflater.from(context).inflate(R.layout.button, tr, false);您可以在XML文件中設置邊距。