Android - CollapsingToolbarLayout setHomeButtonEnabled

时间:2017-02-28 07:20:45

标签: java android android-collapsingtoolbarlayout

我在使用CollapsingToolbarLayout时无法实现HomeUpEnabled,我可以看到图标,但是当我按下它时会注意到。

以下是CollapsingToolbarLayout

avivity.xml

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="250dp"
    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"
        app:contentScrim="?attr/colorPrimary"
        app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed">

        <ImageView
            android:id="@+id/header_id"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            android:scaleType="centerCrop"
            app:layout_collapseMode="parallax" />

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#80000000" />

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

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

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

Activity.java

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

我已在我的清单中宣布了该活动。任何帮助,将不胜感激。

---------------------------- EDIT ------------------ -----------------

这就是固定它:

我不知道它是否正确,但它确实有效。

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            onBackPressed();
        }
    });

@Override
public void onBackPressed() {
    super.onBackPressed();


    finish();
}

在我的xml中,我将工具栏的背景更改为:

android:background="?android:attr/selectableItemBackground"

在图标上获得涟漪效果。

希望这有助于某人。

3 个答案:

答案 0 :(得分:0)

Overrited Follow方法并在方法块中指定您的操作,菜单ID为home:

 @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                drawerLayout.openDrawer(GravityCompat.START);  // OPEN DRAWER
                return super.onOptionsItemSelected(item);
        }
        return super.onOptionsItemSelected(item);

    }

答案 1 :(得分:0)

您必须在manifest.xml中设置父活动名称

您的代码是正确的,但只显示工具栏上的后退箭头,您必须告诉您的活动哪些活动可以返回。

<activity android:name="YourActivity" android:parentActivityName="YourParentActivity" />

答案 2 :(得分:-1)

好的,为activity_main,app_bar和content_main

创建3个不同的xml文件

app_bar

android:id="@+id/app_bar"

android:layout_width="match_parent"

android:layout_height="@dimen/app_bar_height"

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"

    android:background="@color/colorPrimaryDark"

    app:contentScrim="?attr/colorPrimaryDark"

    app:layout_scrollFlags="scroll|exitUntilCollapsed">

    <android.support.v7.widget.Toolbar

        android:id="@+id/toolbar"

        android:layout_width="match_parent"

        android:layout_height="?attr/actionBarSize"

        app:layout_collapseMode="pin"

        app:popupTheme="@style/AppTheme.PopupOverlay" />


    <android.support.design.widget.TabLayout

        android:id="@+id/tabs"

        android:layout_width="match_parent"

        android:layout_height="?attr/actionBarSize"

        android:layout_gravity="bottom"

        app:tabIndicatorHeight="5dp"


        android:background="@color/material_blue_grey_800"

        app:tabIndicatorColor="@color/colorPrimaryDark"

        app:tabSelectedTextColor="@color/colorPrimaryDark"

        app:tabGravity="fill"

        app:tabMode="fixed"/>



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

<强> content_main

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"

tools:context="MainActivity"

tools:showIn="@layout/activity_main">



    <android.support.v4.view.ViewPager

        android:id="@+id/tabs_viewpager"

        android:layout_width="match_parent"

        android:layout_height="match_parent">

    </android.support.v4.view.ViewPager>

<强> activity_main

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:orientation="vertical">

<android.support.v7.widget.Toolbar

    xmlns:android="http://schemas.android.com/apk/res/android"

    android:id="@+id/toolbar"

    android:layout_width="match_parent"

    android:layout_height="?attr/actionBarSize"

    android:layout_gravity="top"

    android:background="@color/colorPrimaryDark"

    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"

    android:minHeight="?attr/actionBarSize"

    app:layout_collapseMode="pin"

    app:title="" />

<android.support.v4.widget.DrawerLayout

    xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:app="http://schemas.android.com/apk/res-auto"

    android:layout_height="match_parent"

    android:layout_width="match_parent"

    android:id="@+id/drawerLayout">

    <include

        layout="@layout/app_bar"

        android:layout_width="match_parent"

        android:layout_height="match_parent" />

    <android.support.design.widget.NavigationView

        xmlns:android="http://schemas.android.com/apk/res/android"

        xmlns:app="http://schemas.android.com/apk/res-auto"

        android:layout_width="wrap_content"

        android:layout_height="match_parent"

        android:layout_gravity="start"

        android:id="@+id/mystuff"

        app:menu="@menu/drawermenu" />

</android.support.v4.widget.DrawerLayout>