2015-07-27 4 views
3

Идея заключается в том, что кнопка может сделать одну вещь на первом клике и другую вещь при втором щелчке.Одна и та же кнопка с несколькими нажатиями

button_food = (Button) findViewById(R.id.foodicon_layout); 
button_travel = (Button) findViewById(R.id.travelicon_layout); 
button_fuel = (Button) findViewById(R.id.fuelicon_layout); 
button_fetch = (Button) findViewById(R.id.fetchicon_layout); 

button_travel.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 

     // Perform action on click 
     button_food.setVisibility(View.GONE); 
     button_fuel.setVisibility(View.GONE); 
     button_fetch.setVisibility(View.GONE); 
    } 
}); 

В данном примере при нажатии кнопки button_travel другие кнопки становятся невидимыми. при повторном нажатии на это снова я хочу, чтобы другие кнопки снова стали видимыми.

ответ

7

Вы можете сделать кнопку установленной видимости, получив их текущую видимость и переключив ее.

button_food = (Button) findViewById(R.id.foodicon_layout); 
button_travel = (Button) findViewById(R.id.travelicon_layout); 
button_fuel = (Button) findViewById(R.id.fuelicon_layout); 
button_fetch = (Button) findViewById(R.id.fetchicon_layout); 

button_travel.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 

     int visibility = button_food.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE; 

     // Perform action on click 
     button_food.setVisibility(visibility); 
     button_fuel.setVisibility(visibility); 
     button_fetch.setVisibility(visibility); 
    } 
}); 

Записав его, как это только простой способ написания, если заявление

int visibility; 
if(button_food.getVisibility() == View.VISIBLE){ 
    visibility = View.GONE; 
} else { 
    visibility = View.VISIBLE; 
} 
2

, что вы можете сделать, это проверить их visiblity, если они видимы множество visiblity Унесенные еще установить visisiblity Видимый для справки посмотрите на приведенный ниже код

if (button_food.getVisibility()==View.VISIBLE) { 
    button_food.setVisibility(View.GONE); 
    } else { 
     button_food.setVisibility(View.VISIBLE); 
    } 

if (button_fuel.getVisibility()==View.VISIBLE) { 
    button_fuel.setVisibility(View.GONE); 
    } else { 
     button_fuel.setVisibility(View.VISIBLE); 
    } 

if (button_fetch.getVisibility()==View.VISIBLE) { 
     button_fetch.setVisibility(View.GONE); 
    } else { 
     button_fetch.setVisibility(View.VISIBLE); 
    } 
5

Просто проверить текущее состояние и действовать соответственно

public void onClick(View v) { 

    // Perform action on click 
    if (button_food.getVisibility() == View.VISIBLE) { 
     button_food.setVisibility(View.GONE); 
    } else { 
     button_food.setVisibility(View.VISIBLE 
    } 

    if (button_fuel.getVisibility() == View.VISIBLE) { 
     button_fuel.setVisibility(View.GONE); 
    } else { 
     button_fuel.setVisibility(View.VISIBLE 
    } 

    if (button_fetch.getVisibility() == View.VISIBLE) { 
     button_fetch.setVisibility(View.GONE); 
    } else { 
     button_fetch.setVisibility(View.VISIBLE 
    } 
} 
3

Вы ищете это ?:

public void onClick(View v) { 

      if(visible){ 
        visible=false; 
        button_food.setVisibility(View.GONE); 
        button_fuel.setVisibility(View.GONE); 
        button_fetch.setVisibility(View.GONE); 
      }else{ 
        visible=true; 
        button_food.setVisibility(View.VISIBLE); 
        button_fuel.setVisibility(View.VISIBLE); 
        button_fetch.setVisibility(View.VISIBLE); 
      } 
    } 
+0

Где видно видимое? –

+0

сделать это поле. –

1

Если и использовать для массива я думаю, что это является слишком простым

Button btnArray[] = new Button[4]; 

    btnArray[0] = (Button) findViewById(R.id.button_food); 
    btnArray[1] = (Button) findViewById(R.id.button_travel); 
    btnArray[2] = (Button) findViewById(R.id.button_fuel); 
    btnArray[3] = (Button) findViewById(R.id.button_fetch); 


    View.OnClickListener btnListener = new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      for (int i = 0; i < btnArray.length; i++) { 
       if (btnArray[i].getId() != v.getId()) 
        if (btnArray[i].getVisibility() == View.GONE) 
         btnArray[i].setVisibility(View.VISIBLE); 
        else 
         btnArray[i].setVisibility(View.GONE); 
      } 
     } 
    }; 
    for (int i = 0; i < btnArray.length; i++) 
     btnArray[i].setOnClickListener(btnListener); 
1

I t hink это самый чистый путь:

button_food = (Button) findViewById(R.id.foodicon_layout); 
button_travel = (Button) findViewById(R.id.travelicon_layout); 
button_fuel = (Button) findViewById(R.id.fuelicon_layout); 
button_fetch = (Button) findViewById(R.id.fetchicon_layout); 
private boolean visible; 

button_travel.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     if(visible){ 
      visible=false; 
      button_food.setVisibility(View.GONE); 
      button_fuel.setVisibility(View.GONE); 
      button_fetch.setVisibility(View.GONE); 
     }else{ 
      visible=true; 
      button_food.setVisibility(View.VISIBLE); 
      button_fuel.setVisibility(View.VISIBLE); 
      button_fetch.setVisibility(View.VISIBLE); 
     } 
    } 
}); 
Смежные вопросы