2011-09-27 4 views
0

android의 textview에 문제가 있습니다.Android View.Gone가 작동하지 않음

프로그래밍 방식으로 tablelayout을 만들었고, 9 개의 tablerow를 만들었습니다. (데이터가있는 동안 ... 더 많은 tablerows를 만듭니다.) 데이터가있는 열이 8 개 있습니다. 좋아요. 하지만 난 그 textviews에서 데이터를 원하기 때문에 나는 내 레이아웃에서 그들을보고 싶지 않기 때문에 내가 보이지 않는 넣어 싶은 3 열 있습니다. 여기에 내 코드를 넣어, 내가 왜 textview.setVisibility(View.GONE) 작동하지 않습니다 모르겠다. 내 view.gone 넣어 내 레이아웃 (내 테이블의 배경색이 검은 색), 어떤 도움이 내 레이아웃에 검은 공간이 나타납니다?

여기 내 main.xml에있는 TableLayout을이 코드

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

이지만, 메신저 데이터를하면서 내가 그들을 만드는 오전 원인 내가 프로그래밍 방식 tablerows에 추가 할 다른 모든 textviews는 없습니다. 나는 webservice에서 데이터를 가져온다. 배열로 나눈 문자열을 가져온 다음 배열 정보를 각 tablerow의 textviews에 저장한다.

+0

TextView.GONE으로 시도하십시오. – Pratik

+0

View.GONE은 대부분의 앱에서 잘 작동하며 여기에 더 많은 코드 스 니펫을 붙여 넣습니다. – Karthi

답변

0

사용 View.INVISIBLE

longitud.setVisibility(View.INVISIBLE); 

link는 당신을 도울 수 있습니다. (I 버튼이 textviews에 대해 확실하지이 속성을 알고있다.)

나는 확실하지 않다 그러나 당신은 또한 투명 색상을 설정 할 수 있습니다

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" 
+0

내 문제는 findViewById를 설정하지 않았다는 것입니다. main.xml에 havent이 있기 때문에 행이 프로그래밍 방식으로 만들어 졌기 때문입니다. 내 main.xml에 없다면 어떻게 참조 할 수 있습니까? –

+0

그것은 XML 또는 progammatically 그것을 한 상관 없어 ... –

+0

당신은 XML에 추가하거나 코드에서 편집해야합니다 – sealz

0

로 사용할 수도 있지만, 어디이 뷰의 높이, 폭, 위치를 정의하는? 그리고 어떤 종류의 데이터를 저장하려고하는지 알지 못하지만 ArrayList를 구현하기가 더 쉽고 쉬워 보이지 않을까요?

+0

내가 편집 내 코드를 편집해야합니다 Logged –

관련 문제