2015-12-09 3 views
0

Как добавить два параметра макета в addView()? Например: я создал первый TableRow.LayoutParams с полями для строк и второй TableRow.LayoutParams с диапазоном. А потом я хочу, чтобы добавить эти два параметра addView()Добавьте два параметра компоновки в addView()

Вот мой код:

import android.graphics.Color; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.widget.TableLayout; 
import android.widget.TableRow; 
import android.widget.TextView; 


public class MainActivity extends AppCompatActivity { 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     TableLayout tableLayout = new TableLayout(this); 

     TableRow.LayoutParams tableRowParams = new TableRow.LayoutParams(); 
     TableRow.LayoutParams tableRowParams2= new TableRow.LayoutParams(); 

     tableRowParams.setMargins(1, 1, 1, 1); 
     tableRowParams2.span = 2; 


     TableRow row1 = new TableRow(this); 
     TableRow row2 = new TableRow(this); 



     TextView text1 = new TextView(this); 
     text1.setText("text1"); 
     text1.setBackgroundColor(Color.GRAY); 

     TextView text2 = new TextView(this); 
     text2.setText("text2"); 
     text2.setBackgroundColor(Color.GRAY); 

     TextView text3 = new TextView(this); 
     text3.setText("text3"); 
     text3.setBackgroundColor(Color.GRAY); 

     TextView text4 = new TextView(this); 
     text4.setText("text4"); 
     text4.setBackgroundColor(Color.GRAY); 

     TextView text5 = new TextView(this); 
     text5.setText("text5"); 
     text5.setBackgroundColor(Color.GRAY); 

     TextView text6 = new TextView(this); 
     text6.setText("text6"); 
     text6.setBackgroundColor(Color.GRAY); 

     row1.addView(text1, tableRowParams); 
     row1.addView(text2, tableRowParams2); 

     row2.addView(text4, tableRowParams); 
     row2.addView(text5, tableRowParams); 
     row2.addView(text6, tableRowParams); 

     tableLayout.addView(row1); 
     tableLayout.addView(row2); 

     setContentView(tableLayout); 

    } 

} 

Как я могу добавить два параметра для row1.addView()?

ответ

0

Рафаэль Кардосо, вы представляете мне идею. Я решил свою проблему следующим образом:

TableRow.LayoutParams tableRowParams = new TableRow.LayoutParams(); 
TableRow.LayoutParams tableRowParams2 = new TableRow.LayoutParams(); 

tableRowParams.setMargins(1, 1, 1, 1); 

tableRowParams2.span = 2; 
tableRowParams2.setMargins(1, 1, 1, 1); 

и теперь я могу применить tableRowParams2 к любой ячейке, которую я хочу.

+0

Я рад, что смог помочь :) – RafaelC

0

Возможно, это поможет!

How can i add more than 1 Views in one cell in TableRow?

Вы должны поместить их в какой-то контейнер, например, LinearLayout или RelativeLayout. Для каждой ячейки может быть только один вид, но если этот вид является контейнером, то этот вид может быть фактически составлен из нескольких.

+0

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

0

Почему бы вам просто не определить объект LayoutParams с обоими конфигами?

TableRow.LayoutParams tableRowParamsExample = new TableRow.LayoutParams(); 
tableRowParamsExample .setMargins(1, 1, 1, 1); 
tableRowParamsExample .span = 2; 

row1.addView(text1, tableRowParamsExample); 

Однако это обход. Вы также можете редактировать определенные LayoutParams строк, которые хотите изменить. Например:

TableRow row1 = new TableRow(this); 
TableRow.LayoutParams newParams = buildParams(row1); 
row1.setLayoutParams(newParams); 

И извлечь логику методу, например.

private LayoutParams buildParams(TableRow row) { 
    TableRow.LayoutParams newParams = new TableRow.LayoutParams(row.getLayoutParams()); 
    newParams.span = 12; 
    return newParams 
} 
+0

, потому что я не хочу применять margin и span для всех ячеек. Я хочу только для нескольких. – gigs

+0

@gigs проверяет, работает ли это. – RafaelC

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