アプリの仕組みは次のとおりです。アプリはユーザーに 30 個のボタンを表示し、ユーザーはタップして正しいボタンを推測できます。ユーザーがボタンをタップすると、すべてのボタン (これらのボタンを含むビューなど) がロックされ、対応する (正しいまたは間違った推測) アニメーションが再生されます。タップされたボタン自体は、次のラウンドまで無効にする必要があります。アニメーションが終了すると、以前にタップされていないすべてのボタン (これらのボタンを含むビューなど) が再び使用できるようになります。
したがって、これらの 30 個のボタンを持つ別のレイアウトを含むレイアウトがあります。
...
<RelativeLayout
android:id="@+id/alphabetContainer"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<include layout="@layout/alphabet" />
</RelativeLayout>
...
ここで、ボタンがクリックされないようにロックしてから、ロックを解除する必要があります。だから私は試しました:
...
private RelativeLayout alphabetPanel;
...
public void onCreate(){
...
alphabetPanel = (RelativeLayout) findViewById(R.id.alphabetContainer);
...
}
...
private void lockButtons(){
alphabetPanel.setEnabled(false);
}
しかし、これはボタンをロックしません。私も試しました:
alphabetPanel.setFocusable(false);
alphabetPanel.setClickable(false);
どちらも役に立ちません。すべてがレイアウト自体にのみ依存しているように見えますが、それに含まれるビューには依存していないようです。
また、ボタンのあるレイアウトの上に配置するための偽のレイアウトを前面に持ってきて追加しようとしました。これは回避策であり、両方のレイアウトを RelativeLayout 内にのみ配置する必要があるため、注意が必要です。
...
blockingLayout = new RelativeLayout(this);
blockingLayout.setLayoutParams(alphabetPanel.getLayoutParams());
...
setVisibility()
しかし、これは非常に奇妙に機能します。どういうわけか、この場合の両方のレイアウトが1秒ごとに表示されたり消えたりするか、まったく表示されません-コードでメソッドが使用されていないため、まったく理解できません!
残っている唯一の方法は、すべてのビュー (ボタン) を繰り返して無効にし、元に戻すことです。
他に方法はありますか?
UPDATE
最後に、「壁」レイアウトをxmlに追加する必要がありました。クリック可能でフォーカス可能にすることで、ソリューションになります。