2016-04-27 1 views
-5

私は今このコードを使用していますが、不可視性のみが実行されています。私はボタンを1回クリックするだけで、Androidのタスクの可視性と不可視性の両方を実現したい

mute.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     mute = (ImageButton) findViewById(R.id.mute); 
     if (mute.getVisibility() != View.INVISIBLE) { 
      power.setVisibility(View.INVISIBLE); 
     } else { 
      power.setVisibility(View.GONE); 
     } 
    } 
}); 
+1

あなたが 'View.VISIBLE'について知っているかどうかは、アンドロイドにありますか? –

+0

GONEとINVISIBLEはどちらも意味が分かりませんが、あなたはVISIBLEを意味すると思います – Pooya

+0

'mute'の可視性をチェックしているのはなぜですか?可視性はおそらく変わらないので、あなたはonClickListenerで何も変更しません。 – Matthew

答えて

0

これは動作します。ブール変数をクラス内ではなくメソッドの外側にグローバルとして作成します。

boolean flag=true; 

この追加された方法を追加します。

​​

ミュートは常に表示されます。これは、結果が同じになる理由を視覚的に表示するためです。

はコーディング楽しむ....

+0

私はそのようにチェックしましたが、その実行は不可視でしたが、私は同じボタンをクリックするだけで別の条件文が必要ですか? –

+0

がこの回答を試していますか? – sushildlh

+0

あなたのXMLもチェックしてください。初めて視界が真であることを確認してください。 – sushildlh

0

それdidntの変更がView.GONEで、View.INVISIBLEは、要素を非表示にすることで同じ動作を持っている理由を。要素を表示するには、View.VISIBLEを使用する必要があります。

もう1つのヒント:ミュート変数をグローバル変数にし、isShownメソッドを使用します。常にonClickに初期化するとonCreateメソッドで変数を初期化することを覚えておいてください、その性能に違いがあります。

Imageview mute; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    mute = (ImageButton) findViewById(R.id.mute); 
    mute.setOnClickListener(this); 
} 


@Override 
public void onClick(View v) { 
    if (mute.isShown()) 
     power.setVisibility(View.INVISIBLE); 
    else 
     power.setVisibility(View.VISIBLE); 
    } 
}); 
0

View.INVISIBLEView.GONEは、同じ効果を持っており、あなたのビューが表示されません。

唯一の違いは、INVISIBLEを使用すると、ビューはレイアウト目的でスペースを占めることになり、GONEを使用すると表示にはスペースが必要になることです。

あなたはここに

if (mute.getVisibility() != View.INVISIBLE) 
     power.setVisibility(View.INVISIBLE); 
else 
     power.setVisibility(View.VISIBLE); 
0

を使用する必要があり、これはあなたを助けることを願っています。

if (yoursecondLayout.getVisibility() == View.GONE) { 

     yourfirstlayout.setVisibility(View.GONE); 
     yoursecondLayout.setVisibility(View.VISIBLE); 

    } else { 

     yourfirstlayout.setVisibility(View.VISIBLE); 
     yoursecondLayout.setVisibility(View.GONE); 

    } 
0

はシンプルなソリューションである、このようにしてみView.VISIBLE

public void onClick(View v) { 
    mute = (ImageButton) findViewById(R.id.mute); 
    if (mute.isShown()) 
     power.setVisibility(View.GONE); 
    else 
     power.setVisibility(View.VISIBLE); 
}