2013-04-26 63 views
1

我正在開發一個項目以測試用戶行爲。這裏是我的XML佈局Android將佈局劃分爲部分併爲其分配計數器

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/RelativeLayout" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
> 

<RelativeLayout 
    android:id="@+id/TouchArea" 
    android:layout_width="240dp" 
    android:layout_height="400dp" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:background="#800ff4ff" > 

    <LinearLayout 
     android:id="@+id/grid1" 
     android:layout_width="60dp" 
     android:layout_height="100dp" 
     android:background="#000000" 
     android:orientation="vertical" > 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/grid2" 
     android:layout_width="60dp" 
     android:layout_height="100dp" 
     android:layout_alignParentTop="true" 
     android:layout_toRightOf="@+id/grid1" 
     android:background="#FFFFFF" 
     android:orientation="vertical" > 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/grid3" 
     android:layout_width="60dp" 
     android:layout_height="100dp" 
     android:layout_alignParentTop="true" 
     android:layout_toRightOf="@+id/grid2" 
     android:background="#000000" 
     android:orientation="vertical" > 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/grid4" 
     android:layout_width="60dp" 
     android:layout_height="100dp" 
     android:layout_alignParentTop="true" 
     android:layout_toRightOf="@+id/grid3" 
     android:background="#FFFFFF" 
     android:orientation="vertical" > 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/grid5" 
     android:layout_width="60dp" 
     android:layout_height="100dp" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/grid1" 
     android:background="#FFFFFF" 
     android:orientation="vertical" > 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/grid6" 
     android:layout_width="60dp" 
     android:layout_height="100dp" 
     android:layout_below="@+id/grid2" 
     android:layout_toLeftOf="@+id/grid3" 
     android:background="#000000" 
     android:orientation="vertical" > 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/grid7" 
     android:layout_width="60dp" 
     android:layout_height="100dp" 
     android:layout_alignTop="@+id/grid6" 
     android:layout_toLeftOf="@+id/grid4" 
     android:background="#FFFFFF" 
     android:orientation="vertical" > 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/grid8" 
     android:layout_width="60dp" 
     android:layout_height="100dp" 
     android:layout_alignLeft="@+id/grid4" 
     android:layout_alignTop="@+id/grid7" 
     android:background="#000000" 
     android:orientation="vertical" > 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/grid9" 
     android:layout_width="60dp" 
     android:layout_height="100dp" 
     android:layout_alignParentLeft="true" 
     android:layout_alignTop="@+id/grid10" 
     android:background="#000000" 
     android:orientation="vertical" > 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/grid10" 
     android:layout_width="60dp" 
     android:layout_height="100dp" 
     android:layout_below="@+id/grid6" 
     android:layout_toLeftOf="@+id/grid7" 
     android:background="#FFFFFF" 
     android:orientation="vertical" > 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/grid11" 
     android:layout_width="60dp" 
     android:layout_height="100dp" 
     android:layout_alignLeft="@+id/grid7" 
     android:layout_alignTop="@+id/grid10" 
     android:background="#000000" 
     android:orientation="vertical" > 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/grid12" 
     android:layout_width="60dp" 
     android:layout_height="100dp" 
     android:layout_alignBottom="@+id/grid11" 
     android:layout_alignParentRight="true" 
     android:background="#FFFFFF" 
     android:orientation="vertical" > 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/grid13" 
     android:layout_width="60dp" 
     android:layout_height="100dp" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/grid9" 
     android:background="#FFFFFF" 
     android:orientation="vertical" > 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/grid14" 
     android:layout_width="60dp" 
     android:layout_height="100dp" 
     android:layout_alignLeft="@+id/grid10" 
     android:layout_alignTop="@+id/grid13" 
     android:background="#000000" 
     android:orientation="vertical" > 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/grid15" 
     android:layout_width="60dp" 
     android:layout_height="100dp" 
     android:layout_alignParentBottom="true" 
     android:layout_alignRight="@+id/grid11" 
     android:background="#FFFFFF" 
     android:orientation="vertical" > 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/grid16" 
     android:layout_width="60dp" 
     android:layout_height="100dp" 
     android:layout_alignParentRight="true" 
     android:layout_below="@+id/grid12" 
     android:background="#000000" 
     android:orientation="vertical" > 
    </LinearLayout> 


</RelativeLayout> 

這裏是它的樣子,相對佈局內16個girds。

enter image description here

我想要做的是爲每個佈局分配計數器,只要ueser的手指穿過這個網格計數器wll加1.然而,當我嘗試添加touchListener並重寫onTouch方法時,它會拋出空指針異常,所以我需要調用dispatchTouchEvent。但在dispatchTouchEvent中,我不確定如何分別獲取每個視圖。希望你能幫到

回答

1

你可以爲每個可點擊的佈局設置android:clickable="true"。然後你可以執行OnClickListener來捕捉每個事件。

public class MyClass implements View.OnClickListener { 

    // set your on click listeners in onCreate or something 

    @Override 
    public void onClick(View v) { 

     switch(v.getId()) { 
      case R.id.grid1: 
       // do something 
      case R.id.grid2: 
       // do something 
      case R.id.grid3: 
       // do something 

       // etc 
    } 
} 
+0

謝謝,這似乎適用於我。雖然我需要繼續獲取所有事件,直到手指恢復爲止,所以我只需更改爲onTouch,並且只在動作等於關閉時才能獲得ID。 – 2013-04-26 17:16:13

+0

好,我很高興它的工作! – 2013-04-26 18:17:58