开发者

Android View.Gone doesn't works

I have a problem with a textview in android.

I made programatically a tablelayout, and i made 9 tablerows in a for (while i have data... make more tablerows). I have 8 columns with data, thats ok. But i have 3 columns that i want to put invisible, because i want data from that textviews but i dont want to see them in my layout. Here i put my code, i dont know why textview.setVisibility(View.GONE) doesn't works.. I put view.gone and in my table appears a black space in my layout (my table background color is black), any help?

here is the code

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);

I have a tablelayout in my main.xml, but all the other textviews that i add with programatically tablerows are not, cause i am creating them while im having data. I bring data from a webservice, that brings me a string that i split in an array and then i put the arrays information into textviews of each tablerow.


Use View.INVISIBLE

longitud.setVisibility(View.INVISIBLE);

This link may also help you out.

I am not sure but you may also have to set Color to Transparent (I know buttons have this property not sure about textviews.)

longitub.setBackground(Color.TRANSPARENT);
//it may be .setBackgroundColor

EDIT:

To reference in code

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

To declare in XML

<TextView 
  android:layout_width="fill_parent"           
  //other properties in here
   >

There are also properties in the XML you can use such as

android:textColor="@android:color/transparent"


The code might be missing, but where are you defining the height, width and position of this view? And I don't know what kind of data you want to store, but wouldn't an ArrayList be easier and cleaner to implement?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜