在ViewView项目内的另一个View的特定坐标处动态放置View

时间:2015-11-04 16:01:29

标签: android listview coordinates

我在listView项目中有2个视图。第一个视图可见,第二个视图不可见。当我点击第一个视图时,我想在第一个视图的坐标处定位第二个视图。当我点击第二个视图时,第二个视图应该消失。我使用了setLayoutParams(),但只有第二个视图的leftMargin等于第一个的leftMargin,但topMargin是不同的。

private TextView spinnerCircle;`
private ScrollView spinner;`

`

public View getView(final int position, View view, ViewGroup parent) {
 if (view == null) 
        view = View.inflate(ctx, RESOURCE_LAYOUT, null);

 spinnerCircle.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            spinner.setVisibility(View.VISIBLE);

            int[] cirlceLoc = new int[2];
            spinnerCircle.getLocationOnScreen(cirlceLoc);

            RelativeLayout.LayoutParams layoutParams = new       RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
            layoutParams.leftMargin = cirlceLoc[0] ;
            layoutParams.topMargin = cirlceLoc[1];

            spinner.setLayoutParams(layoutParams);

        }
    });
    {
}
  return view;

}

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:ignore="MissingPrefix"
android:id="@+id/store_activity">
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/ftv"
    android:layout_marginRight="16dp"
    android:layout_marginTop="16dp">
    <ImageView
        android:layout_width="170dp"
        android:layout_height="140dp"
        android:id="@+id/store_item_image"
        android:layout_alignParentLeft="true"
        android:src="@drawable/ic_int_01"
        android:adjustViewBounds="true"
        android:padding="8dp"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="textCapSentences"
        android:text="Stress remedy"
        android:layout_toRightOf="@id/store_item_image"
        android:id="@+id/description_title"
        fontPath="fonts/CaviarDreams.ttf"
        android:layout_marginLeft="8dp"
        android:textSize="25sp"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/description_title"
        android:text="Stress remedy"
        android:layout_marginTop="8dp"
        android:textSize="18sp"
        android:textColor="@color/blue_strip"
        android:layout_marginLeft="8dp"
        android:id="@+id/store_item_description"
        fontPath="fonts/CaviarDreams.ttf"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/store_item_description"
        android:text="@string/read_more"
        android:layout_marginTop="8dp"
        android:textColor="@color/item_read_more_accent"
        android:id="@+id/store_item_read_more"
        android:paddingTop="4dp"
        android:paddingBottom="4dp"
        android:layout_marginLeft="8dp"
        fontPath="fonts/CaviarDreams.ttf"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/store_item_description"
        android:text="@string/collapse"
        android:textAllCaps="true"
        android:layout_marginTop="8dp"
        android:textColor="@color/item_read_more_accent"
        android:id="@+id/store_item_collapse_description"
        android:paddingTop="4dp"
        android:paddingBottom="4dp"
        android:layout_marginLeft="8dp"
        fontPath="fonts/CaviarDreams.ttf"/>
</RelativeLayout>
<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below = "@id/ftv">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:id="@+id/container_store_item"
        android:layout_marginRight="70dp"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"
        android:background="@color/blue_strip"
        android:layout_centerVertical="true">

        <TextView
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:background="@drawable/ic_emptycircle"
            android:id="@+id/spinner_circle"
            android:text="-"
            android:layout_toRightOf="@+id/store_get"

            android:layout_centerVertical="true"
            android:layout_marginLeft="16dp"
            android:textSize="18sp"
            android:gravity="center"

            />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@color/whitish"
            android:text="Get"
            android:textSize="20sp"
            fontPath="fonts/CaviarDreams.ttf"
            android:layout_centerVertical="true"
            android:layout_marginLeft="16dp"
            android:id="@+id/store_get"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/store_item_title"
            android:text="bottle of remedy"
            android:layout_toRightOf="@+id/spinner_circle"
            android:layout_centerVertical="true"
            android:layout_marginLeft="7dp"
            android:textSize="20sp"
            android:visibility="gone"
            fontPath="fonts/CaviarDreams.ttf"
            android:textColor="@color/whitish"
            android:gravity="center"/>
    </RelativeLayout>
    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/container_store_item"
        android:layout_marginRight="-35dp"
        android:layout_centerVertical="true">
        <ImageView
            android:layout_width="@dimen/store_circle_dim"
            android:layout_height="@dimen/store_circle_dim"
            android:src="@drawable/ic_emptycircle"
            android:layout_centerInParent="true"
            />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="$15"
            android:textSize="25sp"
            android:id="@+id/item_price"
            android:textColor="@color/blue_strip"
            fontPath="fonts/CaviarDreams_Bold.ttf"
            android:layout_centerInParent="true"/>
    </RelativeLayout>
</RelativeLayout>

<ScrollView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/spinner"
    android:visibility="gone"
    android:fillViewport="true"

    android:layout_marginLeft="16dp"
    >
    <LinearLayout
        android:layout_width="40dp"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:id="@+id/spinner_linlay">
        <TextView
            android:layout_width="40dp"
            android:layout_height="38dp"
            android:background="@drawable/ic_0_dropdown_top"
            android:text="-"
            android:gravity="center"
            android:textSize="18sp"
            android:id="@+id/item_empty" />

        <TextView
            android:layout_width="40dp"
            android:layout_height="30dp"
            android:background="@drawable/ic_0_dropdown_middle"
            android:text="1"
            android:gravity="center"
            android:textSize="18sp"
            android:id="@+id/item1" />
        <TextView
            android:layout_width="40dp"
            android:layout_height="30dp"
            android:background="@drawable/ic_0_dropdown_middle"
            android:text="2"
            android:gravity="center"
            android:textSize="18sp"
            android:id="@+id/item2" />
        <TextView
            android:layout_width="40dp"
            android:layout_height="30dp"
            android:background="@drawable/ic_0_dropdown_middle"
            android:text="3"
            android:gravity="center"
            android:textSize="18sp"
            android:id="@+id/item3" />
        <TextView
            android:layout_width="40dp"
            android:layout_height="30dp"
            android:background="@drawable/ic_0_dropdown_middle"
            android:text="4"
            android:gravity="center"
            android:textSize="18sp"
            android:id="@+id/item4"/>
        <TextView
            android:layout_width="40dp"
            android:layout_height="30dp"
            android:background="@drawable/ic_0_dropdown_middle"
            android:text="5"
            android:gravity="center"
            android:textSize="18sp"
            android:id="@+id/item5"
            />
        <TextView
            android:layout_width="40dp"
            android:layout_height="30dp"
            android:background="@drawable/ic_0_dropdown_middle"
            android:text="6"
            android:gravity="center"
            android:textSize="18sp"
            android:id="@+id/item6"
            />
        <TextView
            android:layout_width="40dp"
            android:layout_height="30dp"
            android:background="@drawable/ic_0_dropdown_middle"
            android:text="7"
            android:gravity="center"
            android:textSize="18sp"
            android:id="@+id/item7"
            />
        <TextView
            android:layout_width="40dp"
            android:layout_height="30dp"
            android:background="@drawable/ic_0_dropdown_middle"
            android:text="8"
            android:gravity="center"
            android:textSize="18sp"
            android:id="@+id/item8"
            />
        <TextView
            android:layout_width="40dp"
            android:layout_height="38dp"
            android:background="@drawable/ic_0_dropdown_bottom"
            android:text="9"
            android:gravity="center"
            android:textSize="18sp"
            android:id="@+id/item9"
            />
    </LinearLayout>
</ScrollView>
</RelativeLayout>

2 个答案:

答案 0 :(得分:1)

GetLocationOnScreen返回screen上的坐标。 layoutparamsparentView相关。 所以它需要转换。

如果你有statusbaractionbar

当你得到marginTop时,你应该减去它们。

答案 1 :(得分:0)

我不得不减去listView滚动偏移。