我在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>
答案 0 :(得分:1)
GetLocationOnScreen
返回screen
上的坐标。
layoutparams
与parentView
相关。
所以它需要转换。
如果你有statusbar
和actionbar
,
marginTop
时,你应该减去它们。
答案 1 :(得分:0)
我不得不减去listView滚动偏移。