具有自定义布局的操作栏中没有 HomeUp 按钮

No HomeUp button in actionbar with custom layout

我正在尝试在操作栏中添加(主页)按钮。我在清单中添加了父级 activity 选项,并且 如果我不使用自定义布局 它会起作用。我的自定义布局代码如下。

actionbar = getSupportActionBar();
View view  = getLayoutInflater().inflate(R.layout.top_header_layout, null);
ActionBar.LayoutParams params = new ActionBar.LayoutParams(ActionBar.LayoutParams.FILL_PARENT,ActionBar.LayoutParams.FILL_PARENT);
actionbar.setCustomView(view, params);
actionbar.setDisplayHomeAsUpEnabled(true);
actionbar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);

布局

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/transparent">

    <ImageView
        android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"
        android:src="@drawable/top_bar_logo"
        />

</FrameLayout>

清单

<activity
   android:name=".MoreDetailsActivity"
   android:configChanges="keyboardHidden|orientation|screenSize"
   android:parentActivityName=".AccountInfoActivity"
   android:label="@string/more_details">

   <meta-data android:name="android.support.PARENT_ACTIVITY"
       android:value=".AccountInfoActivity"/>
</activity>

做这样的事情

在 activity 的 onCreate 内。

actionbar = getSupportActionBar();
View view  = getLayoutInflater().inflate(R.layout.top_header_layout, null);
ActionBar.LayoutParams params = new ActionBar.LayoutParams(ActionBar.LayoutParams.FILL_PARENT,ActionBar.LayoutParams.FILL_PARENT);
actionbar.setCustomView(view, params);
actionbar.setDisplayHomeAsUpEnabled(true);
actionbar.setHomeButtonEnabled(true);
actionbar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);

现在在你的 onOptionsItemSelected

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    if (id == android.R.id.home) {
        //Your code here. In your case use Intent
        return true;
    }

    return super.onOptionsItemSelected(item);
}

如果您想要硬件后退按钮侦听器,请使用类似的东西。

 @Override
public void onBackPressed() {
    super.onBackPressed();
    //Your intent here
}

尝试替换

actionbar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);

actionbar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME);

也使用此 actionBar.setIcon(your_drawable); 以显示您的后退图标。