我在 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/