gridLayout動的追加buttonボタン
8156 ワード
学習ノートはネット上の資料に基づいて整理して、ここで原作者に感謝します!
コードは次のとおりです.
サブコントロールの動的追加
コードは次のとおりです.
public class CityActivity extends Activity {
private GridLayout gridLayout;
String[][] count = { { " ", " ", " ", " " }, { " ", " ", " ", " " }, { " ", " ", " ", " " } };
gridLayout = (GridLayout) findViewById(R.id.hot_city_gridlayout);
private void setHotCityGridLayout() {
GridLayout.LayoutParams params = null;
for (int i = 0; i < 3; i++)
for (int j = 0; j < 4; j++) {
final Button btn = new Button(this);
btn.setTag(count[i][j]);
btn.setWidth(40);
btn.setBackgroundResource(R.drawable.btn_shape_login01);
btn.setText(count[i][j]);
btn.setPadding(20, 5, 5, 5);//
//
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(CityActivity.this, QueryActivity.class);
intent.putExtra("cityname", btn.getTag().toString());
setResult(100, intent);
Log.i("TAG", "btnID:" + btn.getTag().toString());
finish();
}
});
GridLayout.Spec rowSpec = GridLayout.spec(i); // btn
GridLayout.Spec columnSpec = GridLayout.spec(j);// btn
params = new GridLayout.LayoutParams(rowSpec, columnSpec);
params.width = 100; // btn
params.height = 60;// btn
params.setMargins(5, 0, 5, 5);// btn
params.setGravity(Gravity.LEFT);// btn ( )
gridLayout.addView(btn, params);
}
}
}
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final LinearLayout layout = new LinearLayout(this);// LinearLayout
layout.setOrientation(LinearLayout.VERTICAL);
setContentView(layout);
final Button btn = new Button(this);
btn.setText("Button1");
layout.addView(btn);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
layout.removeView(btn);
layout.addView(btn);
}
});
setContentView(layout);
}
}
サブコントロールの動的追加
for (int i = 0, j = list.size(); i < j; i++) {
......
View functionView = new View(getContext());
functionView.setBackgroundResource(iconResId);
......
// Spec
GridLayout.Spec rowSpec = GridLayout.spec(i / 3, 1f);
GridLayout.Spec columnSpec = GridLayout.spec(i % 3, 1f);
// Spec GridLayout.LayoutParams 0, ,
GridLayout.LayoutParams layoutParams = new GridLayout.LayoutParams(rowSpec, columnSpec);
layoutParams.height = 0;
layoutParams.width = 0;
// ,
// 2dp bottomMargin, 2dp leftMargin rightMargin
if (i / 3 == 0)
layoutParams.bottomMargin = getResources().getDimensionPixelSize(R.dimen.dp_2);
if (i % 3 == 1) {
layoutParams.leftMargin = getResources().getDimensionPixelSize(R.dimen.dp_2);
layoutParams.rightMargin = getResources().getDimensionPixelSize(R.dimen.dp_2);
}
functionGrid.addView(functionView, layoutParams);
}