大概描述一下效果:最外層是一個 RelativeLayout 里面有自定義個LinearLayout,每個LinearLayout有兩個TextView。that's it !!!
private void initView() { // 獲取xml的RelativeLayout layout = (RelativeLayout) findViewById(R.id.liner); for (int i = 0; i < 5; i++) { RelativeLayout.LayoutParams relativeParams = new RelativeLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); // 每行都有一個linearlayout LinearLayout lLayout = new LinearLayout(mContext); lLayout.setId(i + 10); lLayout.setOrientation(LinearLayout.HORIZONTAL); LinearLayout.LayoutParams lLayoutlayoutParams = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); lLayout.setLayoutParams(lLayoutlayoutParams); TextView tv = new TextView(mContext); tv.setId(i); tv.setText("這是第" + i + "個文本框"); tv.setTextColor(Color.BLUE); TextView tv_num = new TextView(mContext); tv_num.setId(i + 20); tv_num.setText(i + "台"); tv_num.setTextColor(Color.RED); // 為TextView添加長高設置 LinearLayout.LayoutParams layoutParams_txt = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); tv.setLayoutParams(layoutParams_txt); tv_num.setLayoutParams(layoutParams_txt); // 添加到每行的linearlayout中 lLayout.addView(tv); lLayout.addView(tv_num); // 每個linearlayout都在前一個的下面,第一個在頂,不處理 if (i > 0) { relativeParams.addRule(RelativeLayout.BELOW, i + 10 - 1); } // 把每個linearlayout加到relativelayout中 layout.addView(lLayout, relativeParams); } }