具有自定义布局的操作栏中没有 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);
以显示您的后退图标。
我正在尝试在操作栏中添加(主页)按钮。我在清单中添加了父级 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);
以显示您的后退图标。