2011-01-07 9 views
27

Mam układ zawierający elementy kontaktowe telefonu. Kiedy klikam menu opcji, potrzebuję uczynić edittext widocznym na tym ekranie. Zrobiłem to. Istnieje jednak problem z tym, że wysokość tekstu edycji jest zajęta na ekranie, gdy jest niewidoczna. Jak mogę usunąć przestrzeń zajmowaną przez edycję tekstu, a jego niewidoczne na ekranie (Układ) .. Mój kod jest podany poniżejUkryj EditText i ustaw go jako widoczny, klikając menu

My XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:paddingLeft="10dp" 
    android:paddingRight="10dp"> 

    <ListView android:id="@id/android:list" android:layout_width="fill_parent" 
     android:layout_height="fill_parent" android:layout_weight="1" 
     android:drawSelectorOnTop="false"> 
    </ListView> 

    <TextView android:id="@id/android:empty" android:layout_width="fill_parent" 
     android:layout_height="fill_parent" android:text="No Entries available"> 
    </TextView> 




    <TableRow android:id="@+id/TableRow001" 
     android:layout_width="wrap_content" android:background="#C0C0C0" 
     android:layout_height="wrap_content"> 

     <EditText android:id="@+id/NumberEditText01" 

      android:layout_width="wrap_content" 
      android:paddingLeft="20dip" 
      android:layout_height="wrap_content"> 
     </EditText> 

     <Button android:layout_width="wrap_content" android:id="@+id/callNow01" 
      android:layout_height="wrap_content" 
      android:text="Call now" 
      > 
     </Button> 

    </TableRow> 
</LinearLayout> 

i klasa:

public class ListContacts extends ListActivity { 

    TableRow tableRow; 
    EditText phoneNumber; 
    Button callNow; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // Associate the xml with the activity 
     setContentView(R.layout.activitylist); 
     tableRow = (TableRow) findViewById(R.id.TableRow001); 
     tableRow.setVisibility(View.INVISIBLE); 


     phoneNumber = (EditText) findViewById(R.id.NumberEditText01); 
     phoneNumber.setVisibility(View.INVISIBLE); 
     phoneNumber.setKeyListener(DialerKeyListener.getInstance()); 

     callNow = (Button) findViewById(R.id.callNow01); 
     callNow.setVisibility(View.INVISIBLE); 
    } 


    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 

      case FIRST: 
       tableRow.setVisibility(View.VISIBLE); 
       phoneNumber.setVisibility(View.VISIBLE); 
       callNow.setVisibility(View.VISIBLE); 
       break; 
     } 
    } 
} 

Odpowiedz

74

Wypróbuj phoneNumber.setVisibility(View.GONE);

+0

Dziękuję bardzo indyfromoz. Działa dobrze. – jennifer

+0

@Jennifer: Jeśli ta odpowiedź rozwiązała Twój problem, powinieneś ją zaakceptować. – Mudassir

Powiązane problemy