一种方法是使用Toolbar 而不是默认的ActionBar。这样,您就可以在Toolbar 的右侧简单地添加一个溢出Button 或ImageButton (...),您可以简单地使用onClickListener()。
一个例子:
首先,声明你的Toolbar xml。
toolbar.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"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:background="ANY_HEX_COLOR"
android:elevation="4dp">
<ImageButton
android:layout_width="wrap_content"
android:layout_height="60dp"
android:layout_gravity="end"
style="@android:style/Widget.Holo.Button.Borderless"
android:paddingBottom="10dp"
android:paddingTop="10dp"
android:id="@+id/bt_overflow"
android:src="@android:drawable/ic_menu_more" />
</android.support.v7.widget.Toolbar>
稍后,通过在 style.xml 上设置 NoActionBar 主题来隐藏默认的 ActionBar。比如:
style.xml
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- ... -->
</style>
</resources>
现在,将您的 Toolbar 添加到您的 Activity xml 文件中。
my_activity.xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/rl_root"
tools:context="com.testapp.ToolBarActivity">
<include
android:id="@+id/tool_bar"
layout="@layout/toolbar"
/>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/tool_bar"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.testapp.ToolBarActivity">
<TextView android:text="@string/hello_world" android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
</RelativeLayout>
然后,在您的 Activity 上,使其继承自 ActionBarActivity。并设置你的监听器。
MyActivity.java
public class ToolBarActivity extends ActionBarActivity {
private Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tool_bar);
toolbar = (Toolbar) findViewById(R.id.tool_bar);
ImageButton ib = (ImageButton) findViewById(R.id.bt_overflow);
ib.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity();
}
});
toolbar.setTitle("Test");
}
private void startActivity() {
Intent it = new Intent(this,OtherActivity.class);
startActivity(it);
}
}
P.S.:不要忘记在你的 gradle 文件中添加支持库。
dependencies {
compile 'com.android.support:appcompat-v7:22.2.0'
}
如果您希望 Toolbar 表现得像普通的 ActionBar,只需将此行添加到您的 onCreate():
setSupportActionBar(toolbar);