Android:尝试获取AppBarLayout LayoutParams时应用程序崩溃
我在尝试设置AppBarLayout参数时遇到ClassCastException。下面是我的XML代码Android:尝试获取AppBarLayout LayoutParams时应用程序崩溃,android,android-toolbar,android-collapsingtoolbarlayout,android-appbarlayout,Android,Android Toolbar,Android Collapsingtoolbarlayout,Android Appbarlayout,我在尝试设置AppBarLayout参数时遇到ClassCastException。下面是我的XML代码 <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://schema
<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"
tools:context="com.example.testapp.ConsoleActivity">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="280dp"
android:theme="@style/AppTheme.AppBarOverlay"
android:id="@+id/app_bar_layout">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:contentScrim="?attr/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="220dp"
android:id="@+id/app_bar_account_cards_pager"
app:layout_collapseMode="parallax"
android:layout_marginTop="?attr/actionBarSize" />
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay"
app:layout_collapseMode="pin" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:id="@+id/nested_scroll_bar"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<include layout="@layout/content_console"
android:layout_height="match_parent"
android:layout_width="match_parent"/>
</android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
但是我得到的java.lang.ClassCastException:android.support.design.widget.CollasingToolbarLayout$LayoutParams不能强制转换为android.support.design.widget.AppBarLayout$LayoutParams
,这行代码AppBarLayout.LayoutParams p=(AppBarLayoutParams.LayoutParams)toolbar.getLayoutParams()代码>。我如何解决这个问题?你必须用
android.support.design.widget.CollapsingToolbarLayout.LayoutParams
而不是
android.support.design.widget.AppBarLayout.LayoutParams
编辑:布局参数由视图的IMMIDATE父级提供
CollapsingToolbarLayout collapsingToolbar = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar);
AppBarLayout.LayoutParams p = (AppBarLayout.LayoutParams) collapsingToolbar.getLayoutParams();
p.setScrollFlags(0);
collapsingToolbar.setLayoutParams(p);
您的工具栏位于安卓.support.design.widget.ColasingToolbarLayout中
使用ColasingToolbarLayout代替AppBarLayout。这是因为您的工具栏不在AppBarLayout中,而在AppBarLayout中CollapsingToolbarLayout@EduardoHerzer@Chetan@Vlad Matvienko好的。现在我尝试使用collavingToolbarLayout.LayoutParams
进行强制转换,但它没有提供我实际需要的setCrollFlags()
功能。我该如何解决这个问题?但是,android.support.design.widget.collasingToolbarLayout.LayoutParams
没有提供我实际需要的setScrollFlags()
功能。它说无法解析方法?在折叠工具栏上应用findViewById并从中获取布局参数。我不明白。我用android.support.design.widget.CollapplingToolBarLayout.Layout铸造Params
并获得了一个实例collasingToolbarLayout.LayoutParams
,但此实例不提供我需要设置的setScrollFlags()
方法。AppBarLayout.LayoutParams的AppBarLayout.LayoutParams
有这个方法。我刚刚试用了你编辑的代码。它工作得很好。非常感谢你
CollapsingToolbarLayout collapsingToolbar = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar);
AppBarLayout.LayoutParams p = (AppBarLayout.LayoutParams) collapsingToolbar.getLayoutParams();
p.setScrollFlags(0);
collapsingToolbar.setLayoutParams(p);