如何使用CollapsingToolbarLayout而不是使用应用程序主题操作栏进行特定的活动?

问题描述:

我为我的应用程序使用应用程序主题,其中操作栏标志对于该主题为真。我的所有活动都显示了相同的操作栏。如何使用CollapsingToolbarLayout而不是使用应用程序主题操作栏进行特定的活动?

如何使用CollapsingToolbarLayout进行任何特定活动而不是使用主应用主题操作栏?

我已经添加下面的代码在我的活动类:

final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     CollapsingToolbarLayout collapsingToolbar = 
       (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar); 
     collapsingToolbar.setTitle(cheeseName); 

这是我的布局:

<android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsing_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed" 
      android:fitsSystemWindows="true" 
      app:contentScrim="?attr/colorPrimary" 
      app:expandedTitleMarginStart="48dp" 
      app:expandedTitleMarginEnd="64dp"> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
       app:layout_collapseMode="pin" /> 

     </android.support.design.widget.CollapsingToolbarLayout> 

但它不工作,我的活动处处显示着应用主题行动吧。

试试这个,

xml文件

<android.support.design.widget.AppBarLayout 
     android:id="@+id/app_bar_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:fitsSystemWindows="true" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsing_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:fitsSystemWindows="true" 
      app:contentScrim="?attr/colorPrimary" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

      <ImageView 
       android:id="@+id/image" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:fitsSystemWindows="true" 
       android:scaleType="centerCrop" 
       android:src="@drawable/your_image" 
       app:layout_collapseMode="parallax" /> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:popupTheme="@style/ThemeOverlay.AppCompat.Dark" 
       android:title="Collapsing Toolbar" 
       app:layout_collapseMode="pin" /> 

     </android.support.design.widget.CollapsingToolbarLayout> 
    </android.support.design.widget.AppBarLayout> 
+0

我已经试过这种方式没有为我工作。 – 0xalihn

+0

你会得到什么? –

+0

您尚未使用任何图像进行折叠。使用图像它将工作 –

@ 0xAliHn,

它,因为你没有应用任何主题,以CollapsingToolbarLayout

刚刚创建要的是定制的主题和应用它到你的AppBarLayout

其他明智它会继承您已在Androidmenifest.xml

+0

我在我的AppBarlayout中使用了这个'android:theme =“@ style/ThemeOverlay.AppCompat.Dark.ActionBar”'' – 0xalihn

内部使用如果使用CollapsingToolbarLayout同一个主题,你需要设置Toolbar里面的操作栏。您可以解决这种情况,隐藏您用于所有活动的操作栏(在本例中为主工具栏)。之后,使用上面

final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

对不起你的代码,如果我不明白你想要什么正确的事情。

你应该设置在mainifest新的主题这样

<activity android:name=".your activity" android:theme="xxxx"></activity> 

试试这个:在你的XML布局...

<?xml version="1.0" encoding="utf-8"?> 
    <android.support.design.widget.CoordinatorLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:fitsSystemWindows="true"> 

     <android.support.design.widget.AppBarLayout 
      android:id="@+id/app_bar" 
      android:layout_width="match_parent" 
      android:layout_height="218dp" 
      android:fitsSystemWindows="true" 
      android:theme="@style/AppTheme.AppBarOverlay"> 

      <android.support.design.widget.CollapsingToolbarLayout 
       android:id="@+id/toolbar_layout" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:fitsSystemWindows="true" 
       app:contentScrim="?attr/colorPrimary" 
       app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed"> 

       <ImageView 
        android:id="@+id/header" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:adjustViewBounds="true" 
        android:src="@drawable/google_thumb" 
        app:layout_collapseMode="parallax" 
        app:layout_collapseParallaxMultiplier="0.7" /> 

       <android.support.v7.widget.Toolbar 
        android:id="@+id/toolbar" 
        android:layout_width="match_parent" 
        android:layout_height="?attr/actionBarSize" 
        app:layout_collapseMode="pin" 
        app:layout_scrollFlags="scroll|exitUntilCollapsed" 
        app:popupTheme="@style/AppTheme.PopupOverlay" /> 

      </android.support.design.widget.CollapsingToolbarLayout> 
     </android.support.design.widget.AppBarLayout> 

     //this is the layout that you want under collapsing toolbar 
     <include layout="@layout/content_scrolling" /> 

    </android.support.design.widget.CoordinatorLayout> 

在你Activity

public class Toolbar_activity extends AppCompatActivity { 

    CollapsingToolbarLayout collapsingToolbar; 
    Toolbar toolbar; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.your_layout); 
     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     collapsingToolbar = (CollapsingToolbarLayout) findViewById(R.id.toolbar_layout); 
     collapsingToolbar.setTitle("TITLE"); 
    } 
} 

然后在您的清单:

<activity 
     android:name=".Toolbar_activity" 
     android:label="@string/app_name" 
     android:screenOrientation="portrait" 
     android:theme="@style/AppTheme.NoActionBar"></activity>