工具栏中的自定义后退箭头无效

时间:2016-08-27 11:47:24

标签: java android xml android-support-library android-toolbar

在我的工具栏上使用自定义后退箭头后,按下它时它不会返回。如何解决这个问题?

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final String actionBarColor = "#FFD300";

    ActionBar actionBar = getSupportActionBar();
    if(actionBar != null) {
        actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor(actionBarColor)));
        actionBar.setElevation(0);

        Toolbar tBar = (Toolbar) findViewById(R.id.toolbar_yellow);
        setSupportActionBar(tBar);

        tBar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onBackPressed();
            }
        });
    }
}

toolbar_yellow.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar     
    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/toolbar_yellow"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    android:background="#FFD300"
    android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
    app:navigationIcon="@drawable/ic_action_navigation_arrow_back">

    <TextView
        android:id="@+id/toolbar_text"
        android:text="yellow"
        android:textColor="#000099"
        android:textSize="@dimen/abc_text_size_title_material_toolbar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:singleLine="false"
        android:maxLines="2"/>

</android.support.v7.widget.Toolbar>

3 个答案:

答案 0 :(得分:0)

我认为你错过了这一行

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);

UpDate:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final String actionBarColor = "#FFD300";

    ActionBar actionBar = getSupportActionBar();
    if(actionBar != null) {
        actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor(actionBarColor)));
        actionBar.setElevation(0);

        Toolbar tBar = (Toolbar) findViewById(R.id.toolbar_yellow);
        setSupportActionBar(tBar);

       getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_navigation_arrow_back);

        tBar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onBackPressed();
            }
        });
    }
}

答案 1 :(得分:0)

我将您的代码简化为以下内容。由于您在Toolbar布局文件中设置了toolbar_yellow.xml颜色,因此无需在代码中进行设置。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Toolbar tBar = (Toolbar) findViewById(R.id.toolbar_yellow);

    setSupportActionBar(tBar);
    tBar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            onBackPressed();
        }
    });

}

如果有帮助,请告诉我。

答案 2 :(得分:-1)

如果您没有任何自定义后退按钮,即使您可以通过在manifest.xml中设置一行来显示它

$.map

用于显示自定义图标

<activity
            android:name="com.example.myfirstapp.DisplayMessageActivity"
            android:label="@string/title_activity_display_message"
            android:parentActivityName="com.example.myfirstapp.MainActivity" >
            <!-- Parent activity meta-data to support 4.0 and lower -->
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.example.myfirstapp.MainActivity" />
        </activity>

并将其作为

处理
actionBar.setIcon(R.drawable.app_icon);