Android View.Gone不起作用

时间:2011-09-27 13:31:03

标签: android textview

我在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中。

2 个答案:

答案 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会不会更简单,更清晰?