如何在单个Activity中隐藏一个项目(按钮)并从菜单(ActionBar中的按钮)显示另一个项目(按钮)

时间:2013-07-03 12:19:32

标签: android button menu android-actionbar

enter image description here

当我点击编辑按钮时附加在屏幕截图中,然后我想隐藏编辑按钮并显示保存按钮。我怎么能这样做?

我的菜单文件如下:

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
    android:id="@+id/edit_button"
    android:icon="@drawable/edit_button"
    android:orderInCategory="100"
    android:showAsAction="always"
    android:title="@string/edit"/> 

</menu>

当单击按钮一次时,将图像作为编辑到另一图像时是否可以保存;再次单击按钮时保存为编辑。

4 个答案:

答案 0 :(得分:1)

final DatePicker dp2 = (DatePicker) findViewById(R.id.datePick2);
final Button btn2 = (Button) findViewById(R.id.btnDate2);

dp2.setVisibility(View.GONE);

dp2.setVisibility(View.INVISIBLE);

btn2.setVisibility(View.GONE);

btn2.setVisibility(View.INVISIBLE);

需要时可见:

btn2.setVisibility(View.VISIBLE);

或者您使用Invisible或Gone,但不能同时使用两者!

答案 1 :(得分:1)

试试这个

 @Override
    public boolean onOptionsItemSelected(MenuItem item){
    {

            if(editing){
                   item.setIcon(R.drawable.ic_save);
            }else{
                   item.setIcon(R.drawable.ic_edit);
            }   


        return super.onOptionsItemSelected(menu);

    }

答案 2 :(得分:1)

根据您的评论,您需要的不是其他问题。

不相关,但改变

<item
    android:id="@+id/edit_button"

<item
    android:id="@+id/edit_or_save_button"

从名称中你应该知道下一个是什么:

如果您在编辑时按下按钮,那么您将在允许编辑数据的活动中执行操作,但此按钮会将其文本(和操作)更改为保存!

当然,您将分配不同的动作侦听器,它将执行验证并保存动作。

如果你真的想坚持2按钮的想法(非常不同意):

Button edit_button = (Button)findViewById(R.id.edit_button);
Button save_button = (Button)findViewById(R.id.save_button);

...

edit_button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        edit_button.setVisibility(View.INVISIBLE);
        save_button.setVisibility(View.INVISIBLE);

        DoEdit(v);
    }
});


 save_button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        save_button.setVisibility(View.INVISIBLE);
        edit_button.setVisibility(View.INVISIBLE);

        DoValidationAndSave(v);
    }
});

我希望它能解决你的问题!

答案 3 :(得分:0)

试试这个,

public boolean checkHide = false
@Override
    public boolean onOptionsItemSelected(MenuItem item){
        switch(item.getItemId()){
        case EDIT:
            if(checkHide){
                checkHide=false;
                item.setTitle("edit");
                  // ToDo your function

                }
            else{
                checkHide=true;
                item.setTitle("save");
                  // ToDo your function
                 }
}