首页 > 解决方案 > 如何获取线性布局的子节点的位置?

问题描述

这是我的 xml:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="top"
    android:rotation="180">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_gravity="center"
        android:id="@+id/cols">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:id="@+id/col1">
            <Button .../>
            <Button .../>
            <Button .../>
            <Button .../>
            <Button .../>
            <Button .../>
        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:id="@+id/col2">
            <Button .../>
            <Button .../>
            <Button .../>
            <Button .../>
            <Button .../>
            <Button .../>
        </LinearLayout>

    </LinearLayout>
</LinearLayout>

我想在所有按钮上单击侦听器,并且我想在单击按钮时获得位置。我尝试了几件事但没有成功。确实,我无法获得单击按钮的位置。

标签: javaandroid

解决方案


试试这个逻辑:

在您的活动中,执行以下操作:

LinearLayout layout = findViewById(R.id.col1);

然后,在每个按钮的onClick

for(int i=0; i<layout.getChildCount(); i++) {
    if(layout.getChildAt(i).equals(thisButton))//Replace thisButton with the variable name
    {
        //do something
        // i  represents the button's position in its immediate parent.
        break;
    }
}            

同样的逻辑也适用于 LinearLayoutcol2


推荐阅读