动态创建按钮右侧的TextView

时间:2017-04-16 19:02:39

标签: android imageview

enter image description here 如图所示,除了myTextView之外,一切正常,而不是出现在最后一个Button的右侧,而是出现在16,17和18之上。我无法管理这3个按钮以显示其余部分。这是我的基本代码,我动态创建Buttons和myTextView:

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

LinearLayout layout = (LinearLayout) findViewById(R.id.layout1); // id del XML
layout.setOrientation(LinearLayout.VERTICAL);

for (int i = 0; i < 4; i++) { 
    LinearLayout fila = new LinearLayout(this);
    fila.setLayoutParams(new 
    LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, 
    LinearLayout.LayoutParams.WRAP_CONTENT));
    for (int j = 0; j < 5; j++) { 
            if (i==3 && j==3){ 
               TextView myTextView = new TextView(this); 
               LinearLayout.LayoutParams layoutParams=newLinearLayout.LayoutParams(490, 40);
       layoutParams.setMargins(870, 30, 0, 0); 
       myTextView.setTextSize(26);
       myTextView.setLayoutParams(layoutParams);
       layout.addView(myTextView);


       break;
   }
      Button btnTag = new Button(this);  //          
      btnTag.setBackgroundColor(Color.TRANSPARENT); 
      btnTag.setLayoutParams(new LinearLayout.LayoutParams(255, 166)); 
     fila.addView(btnTag);
     btnTag.setId(j + 1 + (i * 5));
     btnTag.setOnClickListener(prueba);
     }
      layout.addView(fila);
   }

}

2 个答案:

答案 0 :(得分:1)

最后我解决了这个问题。而不是LinearLayout我必须使用RelativeLayout。像这样,我可以在整个xml中在屏幕上的任何地方设置TextView。这是代码,使用rel_btn我在任何地方设置按钮:

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout. activity_main);

RelativeLayout layout = (RelativeLayout) findViewById(R.id.layout1); // id del XML
for (int i = 1; i < 19; i++) {
    RelativeLayout.LayoutParams rel_btn = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    switch(i) {
        case 1: rel_btn.leftMargin = 0; rel_btn.topMargin = 0; break;
        case 2: rel_btn.leftMargin = 255; rel_btn.topMargin = 0; break;
        case 3: rel_btn.leftMargin = 510; rel_btn.topMargin = 0; break;
        …… as many as Buttons requiered
    }
    rel_btn.width = 255; rel_btn.height = 165;
    Button btnTag = new Button(this);
    btnTag.setLayoutParams(rel_btn);
    btnTag.setBackgroundColor(Color.TRANSPARENT); 
    btnTag.setId(0+i); // les pone el ID
    btnTag.setOnClickListener(prueba);
    layout.addView(btnTag);
  }
}

答案 1 :(得分:0)

1。设置布局权重总和

fila.setWeightSum(5);

2. 为所有按钮

设置宽度= 0dp和权重= 1
btnTag.setLayoutParams(new LinearLayout.LayoutParams(0, 166, weight));

3. 为textview设置width = 0dp和weight = 2

LinearLayout.LayoutParams layoutParams= new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 40);
layoutParams.weight = 2;
//layoutParams.setMargins(870, 30, 0, 0);
myTextView.setTextSize(26);
myTextView.setLayoutParams(layoutParams);

更新了onCreate方法

public void onCreate(Bundle savedInstanceState) {

    LinearLayout layout = (LinearLayout) findViewById(R.id.layout1); // id del XML
    layout.setOrientation(LinearLayout.VERTICAL);

    int width = 0; //0dp, we will use weight to set width
    int weight = 1;
    for (int i = 0; i < 4; i++) {
        LinearLayout fila = new LinearLayout(this);
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT, weight);
        fila.setLayoutParams(params);
        fila.setWeightSum(5);
        for (int j = 0; j < 5; j++) {
            if (i==3 && j==3){
                TextView myTextView = new TextView(this);
                LinearLayout.LayoutParams layoutParams= new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 40);
                layoutParams.weight = 2;
                //layoutParams.setMargins(870, 30, 0, 0);
                myTextView.setTextSize(26);
                myTextView.setLayoutParams(layoutParams);
                layout.addView(myTextView);
                break;
            }
            Button btnTag = new Button(this);  //
            btnTag.setBackgroundColor(Color.TRANSPARENT);
            btnTag.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 166, weight));
            fila.addView(btnTag);
            btnTag.setId(j + 1 + (i * 5));
            btnTag.setOnClickListener(prueba);
        }
        layout.addView(fila);
    }

}