15

アニメーションが表示されている間、すべてのタッチ スクリーン操作を無効にしたいと考えています。setClickable()多数のボタンがあるため、アニメーションの開始時または終了時にボタンでメソッドを使用したくありません。助言がありますか?

4

4 に答える 4

6

onTouchEventアクティビティでは、常にオーバーライドしreturn true;て、タッチ イベントを処理していることを示すことができます。

その関数のドキュメントはそこにあります。

編集すべてのビューを 1 つずつ処理する代わりに、画面全体のタッチを無効にする方法の 1 つを次に示します。まず、現在のレイアウトを次のように変更します。

<FrameLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

    < .... put your current layout here ... />

    <TouchBlackHoleView
        android:id="@+id/black_hole"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />
</FrameLayout>

次に、カスタム ビューを次のように定義します。

public class TouchBlackHoleView extends View {
    private boolean touch_disabled=true;
    @Override
    public boolean onTouchEvent(MotionEvent e) {
        return touch_disabled;
    }
    public disable_touch(boolean b) {
        touch_disabled=b;
    }
}

次に、アクティビティで、タッチを無効にすることができます

(TouchBlackHoleView) black_hole = findViewById(R.id.black_hole);
black_hole.disable_touch(true);

そして、それを再び有効にします

black_hole.disable_touch(false);
于 2012-06-11T21:20:17.770 に答える
1

この問題への答え

for (int i = 1; i < layout.getChildCount(); i++) { TableRow row = (TableRow) layout.getChildAt(i); row.setClickable(false);

すべてのビューを持つテーブル レイアウトのすべての行を選択し、それらを無効にしました

于 2012-06-12T18:42:38.450 に答える