2012-03-11 4 views

답변

3

보통이 아닙니다. 맨 위 버튼은 버튼 클릭 이벤트를 흡수하여 그 뒤의 이벤트에 전달하지 않습니다. 이 동작을 얻거나 피하고 싶지는 확실하지 않지만 클릭 수신기를 통해 수동으로 이벤트를 전파함으로써 강요 할 수 있습니다.

여기에는 한 가지 방법이 있습니다 (몇 가지가 있습니다). 가정 buttonOne는 buttonTwo의 상단에 :

final Button buttonOne = (Button) findViewById(...); 
final Button buttonTwo = (Button) findViewById(...); 

buttonOne.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Log.d("ButtonTest", "ButtonOne clicked"); 
     buttonTwo.performClick(); 
    } 
}); 

buttonTwo.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Log.d("ButtonTest", "ButtonTwo clicked"); 
    } 
}); 

click 이벤트는 버튼이에 클릭 이벤트가 발생 버튼 하나에 리스너를 입력합니다.

final Button buttonOne = (Button) findViewById(...); 
final Button buttonTwo = (Button) findViewById(...); 

final OnClickListener listenerTwo = new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Log.d("ButtonTest", "ButtonTwo clicked"); 
    } 
}; 

final OnClickListener listenerOne = new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Log.d("ButtonTest", "ButtonOne clicked"); 
     listenerTwo.onClick(buttonTwo); 
    } 
}; 

buttonOne.setOnClickListener(listenerOne); 
buttonTwo.setOnClickListener(listenerTwo); 
+0

나는이 행동을 obatin하고 싶습니다. 내가 강제로 어떻게 코드를 보여 주시겠습니까? 두 버튼 모두에서 클릭 이벤트를 만든다면 맨 위의 이벤트는 클릭 이벤트를 흡수합니다. –

+0

예를 추가했습니다. – antonyt

+0

버튼에서 onLingClickEvent를 원한다면 어떻게해야합니까? 따라서 내 클릭이 짧으면 buttonone의 이벤트가 완료되고 내 클릭이 길면 buttontwo의 이벤트가 완료됩니까? 저기 perfromLongClick 또는 somekind 있습니까? 나는 여전히 2 개의 버튼을 원한다. 그래서 setonclicklistener와 setonLongclicklistener를 만드는 것은 나에게 좋지 않다. –

0

예, 가능합니다. 포 그라운드 뷰에서 발생하는 클릭 이벤트를 백그라운드 뷰로 전달해야합니다. 클릭이 발생하는 위치와보기의 범위 내에서 발생하는지 확인하여이 작업을 수행 할 수 있습니다.

+0

내가 그것을 할 수 있는지 확실하지 않다 : 여기

은 (쉽게 긴 클릭 이벤트를 지원하고 변경 될 수 있습니다) 일하는 것이 또 다른 방법입니다. 어디에서 clck이 발생했는지 확인할 수있는 코드를 보여 주시겠습니까? –

+0

포 그라운드 버튼이 백그라운드 버튼을 완전히 덮는다 고 말하면 포 그라운드 버튼을 클릭 할 때마다 배경 버튼의 클릭 이벤트도 트리거되어야하므로 경계를 검사해야합니까? (그렇다면 다시 생각해 보는 것이 좋습니다) –

관련 문제