android layout空白,AppBarLayout动态设置View.GONE的空白占位问题
时间: 2024-03-17 21:45:17 浏览: 220
这个问题可能与AppBarLayout的滚动效果有关。当你动态设置一个View为GONE时,AppBarLayout会重新计算滚动范围,但是由于布局文件中的空白区域已经被占用了,新的滚动范围可能会出现空白占位问题。
解决办法是在AppBarLayout中使用`app:layout_scrollFlags="scroll|exitUntilCollapsed"`,并且在你要隐藏的View上添加`app:layout_collapseMode="pin"`。这样当你隐藏这个View时,AppBarLayout会自动调整滚动范围,并且不会出现空白占位问题。
示例代码如下:
```xml
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<android.support.design.widget.CollapsingToolbarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:contentScrim="?attr/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="200dp"
android:scaleType="centerCrop"
android:src="@drawable/image"
app:layout_collapseMode="parallax" />
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:text="Title"
android:textColor="@android:color/white"
android:textSize="24sp"
app:layout_collapseMode="pin" />
<View
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="visible"
app:layout_collapseMode="pin" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
```
在代码中,我把你要隐藏的View的`android:visibility`属性设置为`visible`,这样在初始状态下它会被显示出来。当你要隐藏它时,可以使用`view.setVisibility(View.GONE)`方法。AppBarLayout会根据你隐藏的View自动调整滚动范围,不会出现空白占位问题。
阅读全文