隐藏EditText&单击菜单使其可见

时间:2011-01-07 04:29:22

标签: android

我有一个布局,其中包含手机的联系方式。当我单击选项菜单时,我需要在该屏幕中显示一个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;
        }
    }
}

2 个答案:

答案 0 :(得分:82)

尝试phoneNumber.setVisibility(View.GONE);

答案 1 :(得分:0)

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.waist2height); {
        final EditText edit = (EditText)findViewById(R.id.editText);          
        final RadioButton rb1 = (RadioButton) findViewById(R.id.radioCM);
        final RadioButton rb2 = (RadioButton) findViewById(R.id.radioFT);                       
        if(rb1.isChecked()){    
            edit.setVisibility(View.VISIBLE);              
        }
        else if(rb2.isChecked()){               
            edit.setVisibility(View.INVISIBLE);
        }
}