好吧我今晚已经在互联网上搜索了很多,这就是我想到的。由于某种原因,它不起作用。我没有得到任何错误,我可以验证我的循环实际上正在运行。这是我的代码。Android声明按钮Programmaticaly
TableLayout table = (TableLayout) findViewById(R.id.tablelayout1);
while (numsounds>0){
Log.d("MYTAG", ""+numsounds);
if(numsounds>=3){
Log.d("MYTAG", ""+numsounds);
TableRow row = new TableRow(this);
for (int j = 0; j < 3; j++) {
int button_num = j + 1 + (row_num * 3);
row.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));
buttonparams.height = LayoutParams.MATCH_PARENT;
int btnwidth = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1, getResources().getDisplayMetrics());
buttonparams.width = btnwidth;
buttonparams.weight = .31f;
Button btn = new Button(this);
btn.setLongClickable(true);
btn.setLayoutParams(buttonparams);
btn.setText(soundtitleArray[button_num]);
btn.setId(j + 1 + (button_num));
btn.getBackground().setAlpha(150);
btn.setOnClickListener(buttonClickListener);
btn.setOnLongClickListener(buttonLongClickListener);
row.addView(btn);
}
numsounds=numsounds-3;
Log.d("MYTAG", ""+numsounds);
table.addView(row);
row_num = row_num+1;
}
if(numsounds<3){
Log.d("MYTAG", ""+numsounds);
TableRow row = new TableRow(this);
for (int j = 0; j < numsounds; j++) {
int button_num = j + 1 + (row_num * numsounds);
row.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));
buttonparams.height = LayoutParams.MATCH_PARENT;
int btnwidth = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1, getResources().getDisplayMetrics());
buttonparams.width = btnwidth;
float btnweight = 1/numsounds;
buttonparams.weight = btnweight;
Button btn = new Button(this);
btn.setLongClickable(true);
btn.setLayoutParams(buttonparams);
btn.setText(soundtitleArray[button_num]);
btn.setId(j + 1 + (button_num));
btn.getBackground().setAlpha(150);
btn.setOnClickListener(buttonClickListener);
btn.setOnLongClickListener(buttonLongClickListener);
row.addView(btn);
}
table.addView(row);
row_num = row_num+1;
numsounds=numsounds-1;
Log.d("MYTAG", ""+numsounds);
}
}
我知道代码正在运行,因为它输出的数字更改为logcat。我可以弄清楚的是,它一直给我一个空白的屏幕,只有我的背景显示。按钮不显示。
另外My Imports如下。
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import com.<MYAPP>.SoundBoard;
import com.<MYAPP>.R;
import android.content.ContentValues;
import android.content.Intent;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.provider.MediaStore.Audio.AudioColumns;
import android.util.Log;
import android.util.TypedValue;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.Toast;
import com.google.ads.AdRequest;
import com.google.ads.AdSize;
import com.google.ads.AdView;
import android.widget.TableRow.LayoutParams;
我宣布buttonparams在我的课的开头:
private TableLayout.LayoutParams buttonparams = new TableLayout.LayoutParams();
布局PARAMS你用于tablerow的应该是TableRow.LayoutParams的,检查进口,并且还为TableLayout也 – Pragnani 2013-03-08 09:46:51
虐待更新我的问题与进口。我已经有这个顺便说一句。 – mpeerman 2013-03-08 09:47:20
我不知道,但采取泛型类型View.LayoutParams而不是特定的,即TableRow.LayoutParams,因为你已经使用了按钮的布局参数 – Pragnani 2013-03-08 09:53:00