android - 在 ListView 项内的另一个 View 的特定坐标处动态放置一个 View

标签 android listview coordinates

我在 listView 项目中有 2 个 View 。第一个 View 是可见的,第二个是不可见的。当我点击第一个 View 时,我想将第二个 View 定位在第一个 View 的坐标处。当我点击第二个 View 时,第二个 View 应该消失。我使用了 setLayoutParams() ,但只有第二个 View 的 leftMargin 等于第一个 View 的 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>

最佳答案

GetLocationOnScreen 返回屏幕 上的坐标。 layoutparams是相对于parentView的。 所以需要transfrom。

如果你有一个statusbar和一个actionbar

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

关于android - 在 ListView 项内的另一个 View 的特定坐标处动态放置一个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33526415/

相关文章:

android - 这个脚本实际上做了什么?

Javascript\jQuery : is it possible to overlay elements using x and y coordinates?

Android:如何用ImageView + 3 TextView优化ListView?

Android context.getResources.updateConfiguration() 已弃用

javascript - React Native - 良好实践 : SegmentedControlIOS with ListView

java - 如何将listview中的textview传回php

javascript - 如果我有一个 lat/lng,我假设它位于 0,0 那么我如何计算另一对 lat/lng 的 x, y 坐标?

android - 在运行时以编程方式查找最佳匹配资源

java - 错误 : cannot find symbol class Builder (using Retrofit)

android - 查看生成的ListView时间