我在android中遇到了一个textview问题。
我以编程方式制作了一个tablelayout,并且我在for中制作了9个tablerows(虽然我有数据...制作更多的tablerows)。我有8列数据,没关系。但我有3列我想隐形,因为我想要来自textviews的数据,但我不想在我的布局中看到它们。在这里,我把我的代码,我不知道为什么textview.setVisibility(View.GONE)
不起作用..我把view.gone和我的表格中出现黑色空间(我的表背景颜色是黑色),任何帮助?< / p>
这是代码
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TableLayout tl = (TableLayout) findViewById(R.id.tabla1);
tl.setStretchAllColumns(true);
tl.setShrinkAllColumns(true);
//------------------------------------------------------
//seteo la fila para el Titulo
TableRow rowTitulo = new TableRow(this);
rowTitulo.setGravity(Gravity.CENTER_HORIZONTAL);
TextView titulo = new TextView(this);
titulo.setText("Operativa SHAMAN");
titulo.setTextColor(Color.GREEN);
titulo.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 12);
titulo.setGravity(Gravity.CENTER);
titulo.setTypeface(Typeface.SERIF, Typeface.BOLD);
titulo.setVisibility(4);
TableRow.LayoutParams params = new TableRow.LayoutParams();
params.span = 8;
rowTitulo.addView(titulo, params);
tl.addView(rowTitulo);
//--------------------------------------------------------
//seteo los titulos de los campos
TableRow rowCampos = new TableRow(this);
TextView codServ = new TextView(this);
TextView codEnt = new TextView(this);
TextView incid = new TextView(this);
TextView sint = new TextView(this);
TextView codLoc = new TextView(this);
TextView numMovil = new TextView(this);
TextView sexEdad = new TextView(this);
TextView estMovil = new TextView(this);
codServ.setTextColor(Color.BLACK);
codServ.setText("GR");
codServ.setGravity(Gravity.CENTER);
rowCampos.addView(codServ);
codEnt.setTextColor(Color.BLACK);
codEnt.setText("Entidad");
codEnt.setGravity(Gravity.CENTER);
rowCampos.addView(codEnt);
incid.setTextColor(Color.BLACK);
incid.setText("Inc");
incid.setGravity(Gravity.CENTER);
rowCampos.addView(incid);
sint.setTextColor(Color.BLACK);
sint.setText("Síntomas");
sint.setGravity(Gravity.CENTER);
rowCampos.addView(sint);
codLoc.setTextColor(Color.BLACK);
codLoc.setText("Loc");
codLoc.setGravity(Gravity.CENTER);
rowCampos.addView(codLoc);
numMovil.setTextColor(Color.BLACK);
numMovil.setText("Movil");
numMovil.setGravity(Gravity.CENTER);
rowCampos.addView(numMovil);
sexEdad.setTextColor(Color.BLACK);
sexEdad.setText("SE");
sexEdad.setGravity(Gravity.CENTER);
rowCampos.addView(sexEdad);
estMovil.setTextColor(Color.BLACK);
estMovil.setText("EST");
estMovil.setGravity(Gravity.CENTER);
rowCampos.addView(estMovil);
tl.addView(rowCampos);
//--------------------------------------------------------
//Paso a tv2 el string que me devuelve el webService, y lo spliteo en un array por el parametro $
//que me separa al string por incidente
tv2 = resultado.toString();
String [] vecDatos = TextUtils.split(tv2, "\\$");
//voy llenando la tabla con los datos
for (int i=0; i <=(vecDatos.length)- 1; i++) {
//Spliteo cada elemento del array que contiene los incidentes, asi obtengo cada campo por separado
String fila = vecDatos[i].toString();
String [] inc = TextUtils.split(fila, "\\^");
TableRow tr = new TableRow(this);
aInt = Integer.parseInt(inc[0]);
tr.setId(aInt);
tr.setOnClickListener(this);
tr.setLayoutParams(new LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
//-------------------------------------------------
//seteo el campo Grado
TextView grado = new TextView(this);
grado.setId(200+i);
int colorInt = Color.parseColor(inc[1]);
grado.setGravity(Gravity.CENTER);
grado.setText(inc[2]);
grado.setBackgroundColor(colorInt);
grado.setTextColor(Color.BLACK);
grado.setWidth(10);
View v = new View(this);
v.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, 1));
v.setBackgroundColor(Color.rgb(0, 0, 0));
tl.addView(v);
tr.addView(grado);
//----------------------------------------------------------------
//seteo el campo entidad
TextView entidad = new TextView(this);
entidad.setId(300+i);
entidad.setText(inc[3]);
entidad.setGravity(Gravity.CENTER);
entidad.setTextColor(Color.BLACK);
tr.addView(entidad);
//-------------------------------------------------------------------
//seteo el campo numero de incidente
TextView numInc = new TextView(this);
numInc.setId(400+i);
numInc.setText(inc[4]);
numInc.setGravity(Gravity.CENTER);
numInc.setTextColor(Color.BLACK);
tr.addView(numInc);
//-------------------------------------------------------------------
//seteo el campo sintomas
TextView sintomas = new TextView(this);
sintomas.setId(500+i);
//hago funcion para que no me tire error si un sintoma no tiene datos o si
//tiene menos de 10 caracteres y no lo puedo cortar con el substring de 10 que hago
if (inc[5].equals(""))
{
sintomas.setText("Sin Diag");
}
int toChr = 10;
if (inc[5].length() < 10) toChr = inc[5].length();
String strSint = inc[5].substring(0,toChr);
sintomas.setGravity(Gravity.CENTER);
sintomas.setText(strSint);
sintomas.setTextColor(Color.BLACK);
tr.addView(sintomas);
//-------------------------------------------------------------------
//seteo el campo localidad
TextView localidad = new TextView(this);
localidad.setId(600+i);
int colorInt2 = Color.parseColor(inc[6]);
localidad.setText(inc[7]);
localidad.setBackgroundColor(colorInt2);
localidad.setGravity(Gravity.CENTER);
localidad.setTextColor(Color.BLACK);
tr.addView(localidad);
//-------------------------------------------------------------------
//seteo el campo movil
TextView movil = new TextView(this);
movil.setId(700+i);
String strMovil = inc[8];
//hago funcion para que si el campo tiene una A, va en blanco, si tiene una P, en celeste
String [] vecMovil = TextUtils.split(strMovil, "\\|");
if (vecMovil[1].equals("A")) {
movil.setTextColor(Color.BLACK);
movil.setText(vecMovil[0]);
}
else {
movil.setTextColor(Color.CYAN);
movil.setText(vecMovil[0]);
}
movil.setGravity(Gravity.CENTER);
tr.addView(movil);
//-------------------------------------------------------------------
//seteo el campo Sexo y Edad (juntos)
TextView sexoEdad = new TextView(this);
sexoEdad.setId(800+i);
String sexo = inc[9];
String edad = inc[10].toString();
String strEdadSexo = sexo.concat(edad);
sexoEdad.setGravity(Gravity.CENTER);
sexoEdad.setText(strEdadSexo);
sexoEdad.setTextColor(Color.BLACK);
tr.addView(sexoEdad);
//-------------------------------------------------------------------
TextView est = new TextView(this);
est.setId(900+i);
est.setText(inc[11]);
est.setGravity(Gravity.CENTER);
est.setTextColor(Color.BLACK);
tr.addView(est);
//-------------------------------------------------------------------
TextView domicilio = new TextView(this);
domicilio.setId(1000+aInt);
domicilio.setText(inc[12]);
// tr.addView(domicilio);
//hago el campo domicilio hidden, esta el textview pero no me ocupa el layout
// Agrego el tablerow al tablelayout
//-------------------------------------------------------------------
TextView latitud = new TextView(this);
//latitud = (TextView) findViewById(1100+aInt);
latitud.setId(1100+aInt);
latitud.setVisibility(View.GONE);
latitud.setText(inc[13]);
tr.addView(latitud);
//-------------------------------------------------------------------
TextView longitud = new TextView(this);
longitud.setId(1200+aInt);
longitud.setVisibility(View.GONE);
longitud.setText(inc[14]);
// tr.addView(longitud);
//-------------------------------------------------------------------
tl.addView(tr);
我的main.xml中有一个tablelayout,但是我用编程方法添加的所有其他文本视图都没有,因为我正在创建它们而我有数据。我从webservice中获取数据,它为我提供了一个字符串,我将其拆分为数组,然后将数组信息放入每个tablerow的textview中。
答案 0 :(得分:0)
使用View.INVISIBLE
longitud.setVisibility(View.INVISIBLE);
此link也可以帮助您。
我不确定,但你可能还需要将Color设置为Transparent(我知道按钮的这个属性对textview不确定。)
longitub.setBackground(Color.TRANSPARENT);
//it may be .setBackgroundColor
编辑:
在代码中引用
TextView longitub = (TextView) findByViewid(R.id.longitub);
//For this to work you will have to have the textview with the name longitub
//in your xml
以XML格式声明
<TextView
android:layout_width="fill_parent"
//other properties in here
>
您可以使用XML中的属性,例如
android:textColor="@android:color/transparent"
答案 1 :(得分:0)
代码可能丢失,但您在哪里定义此视图的高度,宽度和位置?我不知道你想要存储什么样的数据,但是实现ArrayList会不会更简单,更清晰?