2012-06-11 38 views

Trả lời

6

Trong Hoạt động của bạn, bạn có thể ghi đè onTouchEvent và luôn luôn return true; để cho biết bạn đang xử lý các sự kiện chạm.

Bạn có thể tìm tài liệu cho hàm đó there.

Sửa Dưới đây là một cách để bạn có thể vô hiệu hóa cảm ứng trên toàn bộ màn hình thay vì xử lý tất cả các quan điểm từng người một ... Đầu tiên thay đổi cách bố trí hiện tại của bạn như thế này:

<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> 

Và sau đó xác định tùy chỉnh của bạn xem với một cái gì đó như thế này:

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; 
    } 
} 

Sau đó, trong hoạt động, bạn có thể vô hiệu hóa các liên lạc với

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

Và kích hoạt nó trở lại với

black_hole.disable_touch(false); 
+0

'Xem xem = findViewById (R.id.whole_view); \t chế độ xem.setOnTouchListener (new OnTouchListener() { công khai boolean onTouch (Xem v, sự kiện MotionEvent) { // TODO Phương pháp tạo tự động được tạo trả về true; } }); ' tôi đã viết điều này khi bắt đầu hoạt ảnh nhưng không hoạt động vui lòng cho tôi biết nơi nào sai –

+0

đây là toàn bộ id của bố cục chính của tôi –

+0

Loại xem là gì và bạn đang cố vô hiệu hóa điều gì? Nó là một nút? một ScrollView? ...? – Matthieu

1

câu trả lời cho vấn đề này

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

chọn tất cả các hàng của cách bố trí bảng trong đó có tất cả các quan điểm và vô hiệu hóa chúng

0

Cách dễ dàng để thực hiện đó là thêm bố cục transaperent trên nó (thêm nó trong chiều cao và chiều rộng phụ huynh điền xml của bạn).

Trong khi bắt đầu hoạt hình: transaparentlayout.setClickable(true);

Trong khi kết thúc hoạt hình: transaparentlayout.setClickable(false);

0

Cuối cùng tôi đã là một câu trả lời cơ bản của @Matthieu và làm cho nó làm việc theo cách như vậy. Tôi quyết định xuất bản câu trả lời của mình vì tôi mất 30 phút để hiểu tại sao tôi gặp lỗi.

XML

<...your path to this view and in the end --> .TouchBlackHoleView 
    android:id="@+id/blackHole" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

Lớp

public class TouchBlackHoleView kéo dài Xem { tin boolean touchDisable = false;

public TouchBlackHoleView(Context context) { 
    super(context); 
} 

public TouchBlackHoleView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 

public TouchBlackHoleView(Context context, AttributeSet attrs, int defStyleAttr) { 
    super(context, attrs, defStyleAttr); 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    return touchDisable; 
} 

public void disableTouch(boolean value){ 
    touchDisable = value; 
} 
} 

Sử dụng

blackHole = (TouchBlackHoleView) findViewById(R.id.blackHole); 
blackHole.disableTouch(true); 

Thưởng thức

Các vấn đề liên quan