JCL*_*oot 23 android android-appcompat android-actionbar
我正在尝试ActionBar在我的应用程序中使用Android ,并且有一个隐藏在溢出菜单中的选项.
那里有很多文档,但它令人困惑,因为它大部分只与非常旧的Android版本相关,当你尝试应用相同的概念时,它们不再起作用或工作方式不同.
这是我的Activity布局
<android.support.v7.widget.Toolbar
android:id="@+id/my_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:titleTextColor="@android:color/white"
android:background="@color/colorPrimary"
android:elevation="4dp"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
Run Code Online (Sandbox Code Playgroud)
这是我Activity的onCreate()方法
// sets up activity toolbar
Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);
myToolbar.showOverflowMenu();
myToolbar.setTitleTextColor(R.color.lightPrimaryText);
Run Code Online (Sandbox Code Playgroud)
我也尝试过膨胀一个菜单xml文件onCreateOptionsMenu(),但这也没有给我我想要的结果.
ear*_*jim 46
在res/menu资源文件夹中Menu为您定义一个,例如:Toolbar
toolbar_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu
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"
tools:context=".activity.MainActivity">
<item
android:id="@+id/action_sign_out"
android:title="@string/toolbar_sign_out"
app:showAsAction="never"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
设置app:showAsAction="never"确保它MenuItem不会显示在Toolbar,而是放在溢出菜单中.
您的主题Activity应该是(或衍生自)其中一个NoActionBar主题(Theme.AppCompat.NoActionBar例如,或者Theme.MaterialComponents.NoActionBar如果您使用的是材质组件).
在你的Activity,设置你的Toolbar:
Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);
Run Code Online (Sandbox Code Playgroud)
并覆盖onCreateOptionsMenu()以扩充您之前定义的菜单资源:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar_menu, menu);
return true;
}
Run Code Online (Sandbox Code Playgroud)
您可以覆盖onOptionsItemSelected()以定义您的onClick行为MenuItem:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_sign_out: {
// do your sign-out stuff
break;
}
// case blocks for other MenuItems (if any)
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23101 次 |
| 最近记录: |