我有一个以CollapsingToolbarLayout
和CoordinatorLayout
为根元素的布局。
每当Snackbar
中显示activity
,title
的{{1}}将其位置重置为toolbar
的默认展开标题位置,即使CollapsingToolbar
toolbar
1}}没有(完全)扩展。
第二张图片显示,无论title
是否展开,toolbar
都已修复。
当我在snackbar.show()
或activity
中拨打fragment
时结果相同。
我的布局结构如下所示:
<CoordinatorLayout>
<AppBarLayout>
<CollapsingToolbarLayout>
<Toolbar />
<TabLayout />
</CollapsingToolbarLayout>
</AppBarLayout>
<ViewPager />
<FloatingActionButton />
我使用appcompat and design library (v24.2.1)
的最新依赖项。
我希望有足够的信息,并且有人知道如何解决这个问题:P
修改
同样在模板中,当您启动新项目并选择Scrolling activity
时,调用snackbar.show()
时会出现同样的问题。所以这是一个图书馆问题。
答案 0 :(得分:2)
我遇到了同样的问题,这是一个库问题。在最新版本的设计支持库(25.0.0)上已修复。在build.gradle上使用以下命令:
compile 'com.android.support:design:25.0.0'
希望这有帮助。
答案 1 :(得分:0)
我知道一种解决此问题的方法。
将您的 CoordinatorLayout 放入FrameLayout中。在显示小吃店时,而不是传递coordinatorlayout的ID而是传递FrameLayout的ID。
<FrameLayout 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:id="@+id/rel_full"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.CoordinatorLayout>
</android.support.design.widget.CoordinatorLayout>
</FrameLayout>
Snackbar.make(findViewById(R.id.rel_full), "SNACKBAR",Toast.LENGTH_SHORT).show();
答案 2 :(得分:0)
// Try This (Kotlin) :
val collapsingToolbar = findViewById<CollapsingToolbarLayout>(R.id.collapsing_toolbar)
collapsingToolbar.title = " "
val appBarLayout = findViewById<AppBarLayout>(R.id.appbar)
appBarLayout.setExpanded(true)
appBarLayout.addOnOffsetChangedListener(object : AppBarLayout.OnOffsetChangedListener {
var isShow = false
var scrollRange = -1
@SuppressLint("DefaultLocale")
override fun onOffsetChanged(appBarLayout: AppBarLayout, verticalOffset: Int) {
if (scrollRange == -1) {
scrollRange = appBarLayout.totalScrollRange
}
if (scrollRange + verticalOffset == 0) {
collapsingToolbar.title = "YOUR_TITLE"
isShow = true
} else if (isShow) {
collapsingToolbar.title = " "
isShow = false
}
}
})