我有一个Framelayout,其中第一个元素是一个ImageView,其高度和宽度匹配父级,并且id为A.第二个元素也是一个ImageView,其高度和宽度也匹配父级,并且id为B. element是一个高度和宽度为100 dp的视图,可以移动到整个屏幕,并且id为C.我在背景C中使用透明色,所以在C中我们应该看到B,因为B在A之上。但是我想在C里面展示A,我该怎么做?
答案 0 :(得分:0)
如果您不想显示B,您可以将B的可见性设置为不可见或消失。或者您可以将A替换为B.因为框架布局像堆栈一样工作首先放在底部。所以你输入这种格式B-> A-> - > C
答案 1 :(得分:0)
使用相对布局来包装framelayout,然后您可以使用上面的布局,然后使用视图的可见性
答案 2 :(得分:0)
这会有所帮助。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/a"
android:src="@drawable/ic_networking"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ImageView
android:id="@+id/b"
android:visibility="gone"
android:src="@drawable/dailymetricsin"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<View
android:background="#90606060"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
您可以根据背景中应显示的A(或)B隐藏和显示ImageView。
答案 3 :(得分:0)
如果我理解你的问题,你基本上想让View C和View B的交集透明,看看它们背后的View A.。
在这种情况下,可能足以获得视图C的可见矩形:
Paint paint = new Paint();
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas)
canvas.drawRect(rect, paint);
}
然后您可以在视图B上将此矩形绘制为透明蒙版,这样您就可以看到视图B后面的视图A.您可以通过覆盖视图B的onDraw方法来实现它。
setWillNotDraw(false);
setLayerType(LAYER_TYPE_HARDWARE, null)
您也不应忘记为正在绘制的视图禁用硬件加速(在本例中为视图B),并告诉视图您将手动绘制它:
{{1}}
可在此处找到进一步的解释和示例: Android canvas: draw transparent circle on image