2016-04-03 7 views
0

グリッドにはたくさんのボタンがありますが、グリッドを無効にしてすべてのボタンを無効にすることは可能ですか?Androidグリッドのボタンを無効にする

質問に答えるためにボタンをクリックした後、回答がチェックされ、得点などが計算されている理由はありますが、これが起きている間にボタンを押し続けると、私はハンドラを使用して待機します。ディセーブルは、すべてが計算された後に再度有効にされる一時的なものです。

どうすればいいですか?すべてのボタンを手動で無効にする必要はありません。

ありがとうございます。

編集:

   GridLayout numgrid = (GridLayout) findViewById(R.id.numbersGrid); 
      GridLayout lettergrid = (GridLayout) findViewById(R.id.lettersGrid); 
      numgrid.setEnabled(false); 
      lettergrid.setEnabled(false); 

私は、私はあまりにもそれを必要として上記のコードは動作しませんみました。

答えて

1

明らかにこれを解決する簡単な方法はないようです。レイアウトのすべてのボタンを配列として取得し、ループします。 GridLayoutの中ですべてのボタンが無効になり、次の方法のようなもの:

private void disableButtons(GridLayout layout) { 

    // Get all touchable views 
    ArrayList<View> layoutButtons = layout.getTouchables(); 

    // loop through them, if they are an instance of Button, disable it. 
    for(View v : layoutButtons){ 
     if(v instanceof Button) { 
      ((Button)v).setEnabled(false); 
     } 
    } 
} 

は、単にあなたのグリッドレイアウトに渡す:

GridLayout numGrid = (GridLayout) findViewById(R.id.numbersGrid); 
GridLayout letterGrid = (GridLayout) findViewById(R.id.lettersGrid); 

disableButtons(numGrid); 
disableButtons(letterGrid); 
関連する問題