【问题标题】:Android Studio > GridLayout > how to get the position of a cell?Android Studio > GridLayout > 如何获取单元格的位置?
【发布时间】:2020-08-18 00:11:14
【问题描述】:
<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”中指定的位置相同)

【问题讨论】:

    标签: java android android-gridlayout


    【解决方案1】:

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

    1:给按钮具体的id。即button1,button2

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

    【讨论】:

    • 如果是这样,那么我认为在我的情况下使用 GridLayout 没有任何优势。我只是想创建一个按钮网格,以制作类似于井字游戏的东西。因此,相反,我将为每一行使用 LinearLayout(orientation="horizo​​ntal"),因为它更简单。
    猜你喜欢
    • 2010-10-14
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 2017-10-10
    • 2011-10-01
    • 2012-08-19
    • 1970-01-01
    相关资源
    最近更新 更多