此代码生成一些textview并使用数组为其赋值。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_create_list);
LinearLayout myLayout = (LinearLayout) findViewById(R.id.llContainer2);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
int textViewCount = 24;
TextView[] pairs=new TextView[textViewCount];
for(int i=0; i<textViewCount; i++)
{
pairs[i] = new TextView(this);
pairs[i].setLayoutParams(lp);
pairs[i].setId(i);
pairs[i].setText(getString(R.string.t1));
//--------------------
pairs[i].setClickable(true);
pairs[i].setOnClickListener(this);
pairs[i].setTextColor(Color.parseColor("#4682B4"));
pairs[i].setTextSize(TypedValue.COMPLEX_UNIT_DIP, 21);
pairs[i].setPadding(8,8,8,8);
//------------------
myLayout.addView(pairs[i]);
}}
我在// - 和//中找到了这些代码是重复的。 我正在寻找优化它的方法。 我的想法 1.在循环内膨胀textview布局并使用customlayout.xml 2.在开始时设置一次布局,因此它固有来自父级的布局
尝试
LayoutInflater layoutInflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
查看child = getLayoutInflater()。inflate(R.layout.style_textview,null);
myLayout.addView(子);
// ------------------------------
LinearLayout容器=(LinearLayout) findViewById(R.id.llContainer);
查看inflatedLayout = getLayoutInflater()。inflate(R.layout.style_textview,null);
container.addView(inflatedLayout);
任何人都可以告诉我如何使用xml内部循环或给父进程充气。
其次,如何使用
public void onClick(View v) { switch (v.getId()){ case R.id.i: //start activity }}
我愿意接受更好的建议。
答案 0 :(得分:0)
像这样夸大视图:
pairs[i] = (TextView) LayoutInflater.from(this).inflate(R.layout. style_textview, myLayout, false);
// Don't set Id by a code-defined value like this, use setTag for additional data or use View.generateViewId()
pairs[i].setId(i);
pairs[i].setText(getString(R.string.t1));
pairs[i].setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
// Do stuff
}
}
myLayout.addView(pairs[i]);
LayoutParams
和其他属性在xml中定义