2011-01-07 72 views
27

我有一个布局,其中包含手机的联系人信息。当我点击选项菜单时,我需要在该屏幕上显示可见的edittext。我已经做了。但是有一个问题是编辑文本的高度在屏幕上被隐藏时会占用。如何删除通过编辑文本所占用的空间,而其在屏幕(布局)..我的代码如下隐藏EditText并通过单击菜单使其可见

我的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> 

和类:

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

回答

74

尝试phoneNumber.setVisibility(View.GONE);

+0

非常感谢你indyfromoz。它的工作正常。 – jennifer 2011-01-07 04:51:24