我的自定义表面视图在触摸时无法正确绘制,它在协调器布局内。 我该如何解决?
我有一个片段,其中包含一个像这样的surfaceView:
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<!-- this is an SurfaceView! -->
<com.my.app.CustomView
android:id="@+id/surfaceView"
android:layout_width="match_parent"
android:layout_height="300dp" />
</RelativeLayout>
并且,它将被替换为CoordinatorView, 像这样的布局:
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:id="@+id/mainView">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/WexTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary">
</android.support.v7.widget.Toolbar>
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
style="@style/IconTitleTabLayout">
</android.support.design.widget.TabLayout>
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:id="@+id/content"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
</android.support.design.widget.CoordinatorLayout>
当片段附加时它看起来有效,并且自定义surfaceview显示在正确的位置,但是。
问题是:当我触摸自定义surfaceview时,调用重绘视图,表面将一些帧(约1/3 -1/2帧)偏移量绘制到顶部(偏移距离约为总高度)工具栏),所以在触摸时视图会一直闪烁。
我试图删除 容器FrameLayout(id = content)的
app:layout_behavior="@string/appbar_scrolling_view_behavior"
,表面视图不再闪烁,但没有coordinatorlayout行为,它不在正确的位置
感谢任何解决方案或讨论机制