2013-04-20 1 views
0

5 개의 선형 레이아웃을 자식으로 갖는 선형 레이아웃이 있습니다. 각 자식 선형 레이아웃에 대한 터치 이벤트를 처리하고 싶습니다. 내 레이아웃이xml의 모든 레이아웃에 대한 이벤트 처리

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/container"> 

      <LinearLayout android:id="@+id/item1" 
      android:layout_width="match_parent" 
      style="@style/NavLinkItemContainer" 
      android:layout_height="wrap_content"> 
      <TextView    
       style="@style/NaviLinkSelected" 
       android:text="First"/> 
      </LinearLayout> 

     <LinearLayout android:id="@+id/item2" 
      android:layout_width="match_parent" 
      style="@style/NavLinkItemContainer" 
      android:layout_height="wrap_content">   
     <TextView     
      style="@style/NaviLinks" 
      android:text="Second"/> 
     </LinearLayout> 

     <LinearLayout android:id="@+id/item3" 
      android:layout_width="match_parent" 
      style="@style/NavLinkItemContainer" 
      android:layout_height="wrap_content"> 
     <TextView 
      style="@style/NaviLinks" 
      android:text="Third"/> 
     </LinearLayout> 

     <LinearLayout android:id="@+id/item4" 
      android:layout_width="match_parent" 
      style="@style/NavLinkItemContainer" 
      android:layout_height="wrap_content"> 
     <TextView 
      style="@style/NaviLinks" 
      android:text="Fourth"/> 
     </LinearLayout> 

     <LinearLayout android:id="@+id/item5" 
      android:layout_width="match_parent" 
      style="@style/NavLinkItemContainer" 
      android:layout_height="wrap_content"> 
     <TextView 
      style="@style/NaviLinks" 
      android:text="Fifth"/> 
     </LinearLayout> 

</LinearLayout> 

public class MainActivity extends Activity implements OnTouchListener{ 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     Log.d("","ON TOUCH VIEW ######## "+v.getId()); 
     return false; 
    } 
} 

이 ID를받지하고, 자식 레이아웃을 만질 때처럼 레이아웃을 사용하여 내 활동이 onTouch에서 (항목 1을 ..., 항목 2)를 보이는 이벤트 같이하십시오 보인다 조언.

+0

어디에 문제가 있습니까? – stinepike

답변

2

터치 리스너를 추가하려는 각 레이아웃에 대해 onTouchListener를 설정하십시오. 그래서 각각의 예를 들어

,

LinearLayout l1 = (LinearLayout) findViewById(R.id.item2); 
l1.setOntouchListener(this); 

당신이 리스너를 설정해야 뷰 그룹. 나머지 것들은 이미 당신의 것으로 끝났습니다. 터치 방식으로 터치 또는 전체를 처리 할 수 ​​있습니다. ViewGroup

@Override 
public boolean onTouch(View v, MotionEvent event) { 
    switch (v.getId()) { 
    case R.id.item2: 
     do something 
     break; 
    case R.id.item3: 
     do something 
     break; 
    default: 
     break; 
    } 
     // if you want to consume the behavior then return true else retur false 
} 
+0

각 레이아웃 대신 전체 레이아웃 xml에 ontouch 리스너를 쓸 수있는 방법이 있습니까 – vignesh

+0

감사합니다. 그것은 작동합니다. – vignesh

+0

@vignesh 당신은 환영합니다 :). – stinepike

관련 문제