出于某种原因,我的片段的UI无法使用新SDK正确地重新渲染。这仅适用于安装了Android 8.0或更高版本的Android设备。
当在UI中进行更改时,似乎实际上只有1/4的屏幕被重新渲染。因此,旧的项目仍然可以在屏幕上看到,新项目仅在屏幕的左上角1/4处呈现。
当我开始拖动(甚至只是一点点)时,视图会重新调整并完全呈现。
我在下方添加了一些图片来演示正在发生的事情。为了使它更清晰,我已经将红色和蓝色碎片的背景着色,因此您可以看到哪些部分已经重新渲染。正如您在图2中看到的,只有片段的一部分已呈现。在图片3中拖动一点(有多个标签)后,片段就完全呈现了。
3 After UI update and dragging
我的viewpager / tablayout活动的布局如下:
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabMaxWidth="0dp"
app:tabGravity="fill"
app:tabMode="fixed"
android:fillViewport="false" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
我的片段中的布局如下。有两个部分。一次只能看到一个,另一个看到GONE。具有id&#34; step1&#34;的RelativeLayout;以VISIBLE开头,以及&#34; step2&#34;从GONE开始。按下按钮&#34; step1&#34;将设置为GONE和&#34; step2&#34;可见。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".depot.fragment.StockFragment">
<RelativeLayout
android:id="@+id/step1"
android:background="@color/holo_blue_dark"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Kies het pand" />
<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="vertical"
android:id="@+id/radio_group">
</RadioGroup>
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_alignParentBottom="true"
android:id="@+id/footer">
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"/>
<Button
style="@style/Widget.AppCompat.Button.Borderless"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:id="@+id/button_next"
android:text="Volgende"/>
</RelativeLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/step2"
android:background="@color/holo_red_dark"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/header_step2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:id="@+id/depot_choice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Material.header"
android:text="Kies het pand" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="Klik op de knop rechtersonderin het scherm om scannen te starten." />
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/tableContainer"
android:layout_below="@+id/header_step2"
android:layout_above="@+id/footer_step2">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</android.support.v7.widget.RecyclerView>
<android.support.design.widget.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:elevation="6dp"
app:backgroundTint="@color/accent"
android:src="@drawable/ic_border_color_black_24dp"
android:id="@+id/floating_qrcode_manual"
android:layout_alignParentBottom="true"
android:layout_toLeftOf="@+id/floating_qrcode_scan"
android:layout_toStartOf="@+id/floating_qrcode_scan"
android:layout_marginBottom="10dp"
android:layout_marginRight="20dp"
android:layout_marginEnd="20dp"/>
<android.support.design.widget.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:elevation="6dp"
app:backgroundTint="@color/accent"
android:src="@drawable/qrcode_scan"
android:id="@+id/floating_qrcode_scan"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="10dp"
android:layout_marginRight="10dp"
android:layout_marginEnd="10dp"
android:layout_alignParentEnd="true" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_alignParentBottom="true"
android:id="@+id/footer_step2">
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/divider_light"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"/>
<Button
style="@style/Widget.AppCompat.Button.Borderless"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:id="@+id/button_prev"
android:text="Ander pand kiezen"/>
</RelativeLayout>
</RelativeLayout>
有人能帮我找到这段代码的问题吗?
答案 0 :(得分:0)
我终于设法找到了问题所在。
它与ViewPager无关。只有AndroidManifest中的设置搞砸了android 8.0之后的片段重新渲染。
导致问题的设置如下:
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true" />
删除这些解决了这些问题。