Android Studio > GridLayout > 如何获取单元格的位置?

Android Studio > GridLayout > how to get the position of a cell?

<GridLayout
        android:id="@+id/gridLayout"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:layout_constraintBottom_toTopOf="@+id/linearLayout"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <Button
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_rowWeight="1"
            android:layout_columnWeight="1"
            android:layout_row="0"
            android:layout_column="0"
            android:onClick="markSquare" />

        <Button
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_rowWeight="1"
            android:layout_columnWeight="1"
            android:layout_row="0"
            android:layout_column="1"
            android:onClick="markSquare" />

        <Button
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_rowWeight="1"
            android:layout_columnWeight="1"
            android:layout_row="1"
            android:layout_column="0"
            android:onClick="markSquare" />

        <Button
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_rowWeight="1"
            android:layout_columnWeight="1"
            android:layout_row="1"
            android:onClick="markSquare" />

</GridLayout>

描述: 每个按钮都在一个单元格内并指向一个名为 "markSquare" 的方法,它看起来像这样:

public void markSquare(View v) {
}

如何获取"v"参数的位置? (我在 "layout_row" 和 "layout_column" 中指定的相同位置)

没有直接获取单元格位置的方法。但是,您使用视图 ID 来获取点击的确切视图。

1: 给button.i.e button1, button2

具体的ids

2:并检查您的视图点击 ID 如下:

 public void markSquare(View v) {
    switch(v.getId()){
    case R.id.button1:{
    //Do here what you want
    break;
    }

    case R.id.button2:{
    //Do here what you want

    break;
    }

    }
 }