2012-05-04 2 views
0

Как установить gravity и margin для автогенерации (в коде) TextViews и Buttons? Они находятся внутри LinearLayout.Установка силы тяжести для автоматического создания TextView и кнопки

Вот мой код поколения:

 for(int i=0; i<num_enter; i++){ 
    final int cuco = i; 
    LinearLayout linlay = new LinearLayout(this); 
    linlay.setOrientation(0); 
    TextView text = new TextView(this); 
    text.setText(name[cuco] + "  "); 
    linlay.addView(text); 
    TextView num = new TextView(this); 
    num.setId(cuco); 
    num.setText("" + current[cuco]); 
    linlay.addView(num); 
    Button minus = new Button(this); 
    minus.setText("-"); 
    minus.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      int cval = current[cuco]; 
      int currentF = current[cuco] - 1; 
      current[cuco] = current[cuco] -1; 
      SetSql update = new SetSql(SpellCast.this); 
      update.open(); 
      update.changeCurrent(currentF, cval, name[cuco]); 
      update.close(); 
      ((TextView) findViewById(cuco)).setText("" + currentF); 
     } 
    }); 
    LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.RIGHT); 
    minus.setLayoutParams(p); 
    linlay.addView(minus); 
    Button plus = new Button(this); 
    plus.setText("+"); 
    plus.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      int cval = current[cuco]; 
      int currentF = current[cuco] + 1; 
      current[cuco] = current[cuco] + 1; 
      SetSql update = new SetSql(SpellCast.this); 
      update.open(); 
      update.changeCurrent(currentF, cval, name[cuco]); 
      update.close(); 
      ((TextView) findViewById(cuco)).setText("" + currentF); 
     } 
    }); 
    LinearLayout.LayoutParams w = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.RIGHT); 
    plus.setHeight(LayoutParams.WRAP_CONTENT); 
    plus.setWidth(50); 
    plus.setLayoutParams(w); 
    linlay.addView(plus); 

    main.addView(linlay); 
    } 

Надеется, что вы нашли способ установить кнопку гравитацию без изменения его размера.

+0

Многие люди пытаются помочь ... но мы все просто догадываемся, пока вы не опубликуете какой-то код. Я знаю, что код кажется вам очевидным ... но вы говорите, что все ответы на них не работают, хотя они отвечают на ваш вопрос отлично – ByteMe

+0

Я обновил свой код – arielschon12

+0

Каков результат этого и результат вы хотите? – ByteMe

ответ

1

1) Получить ссылку на TextView say tv.

2) tv.setGravity (Gravity.CENTER);

Он не уверен, работа с LinearLayout .. Попробуйте относительное или абсолютное

+0

, это установит только гравитацию текста, а не TextView – arielschon12

0

Использование View.setLayoutParams(ViewGroup.LayoutParams params). Посмотрите на http://developer.android.com/reference/android/R.styleable.html#ViewGroup_Layout для LayoutParams.

+0

извините, но, как и ответ ниже, он не работает. может ли это работать? я использую много кнопок и текстовых просмотров, и используя этот метод, когда он дает левую границу, они заставляют друг друга стоять друг на друга ... – arielschon12

+0

Не могли бы вы привести пример того, как вы их выложили? – techiServices

+0

Я не могу опубликовать ни одного примера, все, что я хочу, - это способ поместить автоматически сгенерированные кнопки и текстовые поля слева – arielschon12

0

Поскольку никто не решаемые поля

LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 
p.setMargins(10, 10,10,10); 
p.gravity = Gravity.CENTER; 

textView.setLayoutParams(p); 

При использовании setLayoutParams убедитесь, что тип макета Params совпадает родительское представление, которое в данном случае является LinearLayout

setGravity(Gravity.CENTER); Будет ли установить гравитацию текста в представлении

+0

Идеас звучит неплохо, но на самом деле он не работает. он просто заставляет все кнопки придерживаться друг друга, чтобы никто не видел. нет ли другого простого решения? – arielschon12

+0

ну, я не знаю, что вы подразумеваете под «прилипать друг к другу». Если вы разместили какой-то код того, как вы добавляете кнопки/текстовые просмотры, мы, вероятно, могли бы помочь немного больше :) – dymmeh

+0

Ну, на самом деле нечего публиковать. Я имею в виду, что кнопки продолжают формироваться друг на друга, как один на другой. – arielschon12

Смежные вопросы