我想为操作按钮制作教练标记,但我现在不知道如何在操作栏上获取他们的位置和填充。你可以看到我的想法,但我无法在这张照片中看到:
我有一个半透明的覆盖布局,但我想以完全透明的方式显示我正在描述的图标。
有没有办法做到这一点?提前致谢
编辑:实际上这些是我需要找到的值,因为它们在不同的设备中是不同的
EDIT2:使用 Nigam Patro 的解决方案,我结束了这个:
代码:
...
int[] filterPosition = new int[2];
findViewById(R.id.action_filter).getLocationOnScreen(filterPosition);
View filterDummy = coachMark.findViewById(R.id.filter_dummy);
filterDummy.setX(filterPosition[0]);
filterDummy.setY(filterPosition[1]);
...
布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/translucent"
android:fitsSystemWindows="true"
android:paddingBottom="@dimen/activity_vertical_margin" >
<ImageView
android:id="@+id/filter_dummy"
android:layout_width="?android:attr/actionBarSize"
android:layout_height="?android:attr/actionBarSize"
android:padding="9dp"
android:src="@drawable/ic_filter_false" />
</RelativeLayout
EDIT3:代码:
...
int[] filterPosition = new int[2];
View filterView = findViewById(R.id.action_filter);
filterView.getLocationOnScreen(filterPosition);
int paddingTop = filterView.getPaddingTop();
int paddingBottom = filterView.getPaddingBottom();
int paddingLeft = filterView.getPaddingLeft();
int paddingRight = filterView.getPaddingRight();
View filterDummy = coachMark.findViewById(R.id.filter_dummy);
int statusBarHeight = 0;
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
statusBarHeight = getResources().getDimensionPixelSize(resourceId);
}
filterDummy.setX(filterPosition[0]);
filterDummy.setY(filterPosition[1] - statusBarHeight);
filterDummy.setPadding(paddingLeft, paddingTop, paddingRight, paddingBottom);
...
非常接近,但仍然不对